2015-10-05 113 views
0

我试图通过Unity3D内部的XML文档(使用uJS和MSDN XmlDocument类)搜索包含指定字符串的节点(在此测试中,我正在寻找'日志'),然后捕获匹配节点父节点的属性值。搜索XML文档的字符串

但是我把这件事搞乱了;它目前将的所有的if语句(而不仅仅是那些匹配的)传递给if语句,并因此返回XML文档中的所有父名称。任何人都可以用我的逻辑帮助我正确地工作吗?

很多感谢,

瑞安

当前代码:

var mpo = xmlRoot.SelectNodes("MetaPipeObject"); 
 
      
 
    for (var i = 0; i < mpo.Count; i++) 
 
    { 
 
     var curNode = mpo[i]; 
 
     var nodeCheck = curNode.SelectNodes("//*[contains(text(), 'Logs')]"); 
 
      
 
     Debug.Log("nodeCheck: " + nodeCheck.Count); 
 
      
 
     if (nodeCheck.Count > 1) 
 
     { 
 
      Debug.Log(curNode.SelectSingleNode("@name").Value); 
 
     } 
 
    } 
 
}

XML片段:

<MetaPipeObject name="Logs with graffiti"> 
 
    <FileName>TestObj_EvanLogs04.obj</FileName> 
 
    <MeshLocation>/Users/ryanachten/Documents/UnityTests/MetaPipeline_TestModels/CRM_TestObjs/TestObj_EvanLogs/TestObj_EvanLogs04/TestObj_EvanLogs04.obj</MeshLocation> 
 
    <TexLocation>/Users/ryanachten/Documents/UnityTests/MetaPipeline_TestModels/CRM_TestObjs/TestObj_EvanLogs/TestObj_EvanLogs03/TestObj_EvanLogs.jpg</TexLocation> 
 
    <ObjImgCap>/Users/ryanachten/Documents/UnityTests/MetaPipeline/Assets/fuck you_ScreenShot.png</ObjImgCap> 
 
    <ContribName>Ryan Achten</ContribName> 
 
    <ContribDate>03/10/2015</ContribDate> 
 
    <Description>Logs with graffiti found out by Evan's Bay</Description> 
 
    <ModelInfo> 
 
     <ModelCreator>Ryan Achten</ModelCreator> 
 
     <ModelCreateDate>31/05/2015</ModelCreateDate> 
 
     <ModelCreateType>Photogrammetric</ModelCreateType> 
 
    </ModelInfo> 
 
    <ContextualInfo /> 
 
    </MetaPipeObject> 
 
    <MetaPipeObject name="Punch (from Paul Jen"> 
 
    <FileName>DaotfPunch03.obj</FileName> 
 
    <MeshLocation>/Users/ryanachten/Documents/UnityTests/MetaPipeline_TestModels/CRM_TestObjs/TestObj_DaotfPunch/DaotfPunch03/DaotfPunch03.obj</MeshLocation> 
 
    <TexLocation>/Users/ryanachten/Documents/UnityTests/MetaPipeline_TestModels/CRM_TestObjs/TestObj_DaotfPunch/DaotfPunch03/Punch_McorTex_merged.JPG</TexLocation> 
 
    <ObjImgCap> 
 
    </ObjImgCap> 
 
    <ContribName>Ryan Achten</ContribName> 
 
    <ContribDate>04/10/2015</ContribDate> 
 
    <Description>3D model of Judy based on Paul Jenden's costume concept illustrations for the project Digital Achives of the Future</Description> 
 
    <ModelInfo> 
 
     <ModelCreator>ard and Ryan Achten</ModelCreator> 
 
     <ModelCreateDate>26/02/2015</ModelCreateDate> 
 
     <ModelCreateType>Design</ModelCreateType> 
 
    </ModelInfo> 
 
    <ContextualInfo /> 
 
    </MetaPipeObject>

回答

0

的XPath表达式//搜索从根元素开始。在你的情况下,足够做一个.// - 从当前元素搜索。

var nodeCheck = curNode.SelectNodes(".//*[contains(text(), 'Logs')]");