在 XML 文档中搜索字符串
Search XML document for string
我正在尝试通过 Unity3D 中的 XML 文档(使用 uJS 和 MSDN XmlDocument class)搜索包含指定字符串的节点(在这个测试中我正在寻找 'Logs')然后捕获匹配节点父节点的名称属性的值。
但是我在这个过程中的某个地方搞砸了;它目前正在传递 all 节点的 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>
XPath-expression //
从根元素开始搜索。在您的情况下,足以进行 .//
- 从当前元素搜索。
var nodeCheck = curNode.SelectNodes(".//*[contains(text(), 'Logs')]");
我正在尝试通过 Unity3D 中的 XML 文档(使用 uJS 和 MSDN XmlDocument class)搜索包含指定字符串的节点(在这个测试中我正在寻找 'Logs')然后捕获匹配节点父节点的名称属性的值。
但是我在这个过程中的某个地方搞砸了;它目前正在传递 all 节点的 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>
XPath-expression //
从根元素开始搜索。在您的情况下,足以进行 .//
- 从当前元素搜索。
var nodeCheck = curNode.SelectNodes(".//*[contains(text(), 'Logs')]");