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']的「test」節點中選擇具有屬性[@ Result ='true']的子節點。 即理想情況下,應該給兩個節點:如何使用JScript中的XML查詢使用父節點對象來選擇具有特定屬性值的特定子節點?
<action enabled="true" Result="true">T_1</action>
<action enabled="true" Result="true">T_3</action>
相反,我得到的所有節點從整個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;
}
}
請幫我解決或任何其他方式來獲得期望的結果...謝謝!
我試過使用var pass = test.SelectNodes(「./ child :: action [@ Result ='true']」)。length;和var pass = test.SelectNodes(「.// action [@ Result ='true']」)。length; 'pass = 0' – Astral
因此看起來是「。」不管用。或者我在語法中缺少某些東西? – Astral
@Astral實際上'action'的屬性名稱是什麼,'ATPResult'或者只是'Result'? – har07