【发布时间】:2015-12-16 12:34:36
【问题描述】:
My XML:
<tests>
<test name="Machine1" enabled="true">
<action enabled="true" Result="true">T_1</action>
<action enabled="true" Result="false">T_2</action>
<action enabled="true" Result="true">T_3</action>
<action enabled="true" Result="none">T_4</action>
</test>
<test name="Machine2" enabled="false">
<action enabled="true" Result="true">T_5</action>
<action enabled="true" Result="false">T_6</action>
<action enabled="true" Result="false">T_7</action>
<action enabled="true" Result="true">T_8</action>
</test>
</tests>
我想从具有属性 [@enabled='true'] 的“测试”节点中选择具有属性 [@Result='true'] 的子节点。 即理想情况下它应该给出两个节点:
<action enabled="true" Result="true">T_1</action>
<action enabled="true" Result="true">T_3</action>
相反,我从具有属性 [@Result='true'] 的整个 xml 中获取所有节点。即:
<action enabled="true" Result="true">T_1</action>
<action enabled="true" Result="true">T_3</action>
<action enabled="true" Result="true">T_5</action>
<action enabled="true" Result="true">T_8</action>
我的代码:
var filepath = "C:\\Test.xml"
var oXML = Runner.CallMethod("XMLLib.LoadDOM", filepath);
var testNodes = oXML.SelectNodes("//test");
for (var i=0; i<testNodes.length; i++)
{
var test = testNodes.nextNode;
if (test.getAttribute("enabled") == "true")
{
var pass = test.SelectNodes("//action[@Result='true']").length;
var fail = test.SelectNodes("//action[@Result='false']").length;
var missing = test.SelectNodes("//action[@Result='none']").length;
}
}
请帮助我解决方案或任何其他方式以获得所需的结果...谢谢!
【问题讨论】: