07-24-2023, 12:23 AM
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>
I want to select child nodes having, attribute [@Result='true'] from the "test" node having attribute [@enabled='true'].
i.e ideally it should give two nodes:
<action enabled="true" Result="true">T_1</action>
<action enabled="true" Result="true">T_3</action>
Instead I am getting all nodes from the entire xml having attribute [@Result='true']. i.e:
<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>
My Code:
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;
}
}
Please help me with the solution Or any other way to get the desired result...Thanks!
<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>
I want to select child nodes having, attribute [@Result='true'] from the "test" node having attribute [@enabled='true'].
i.e ideally it should give two nodes:
<action enabled="true" Result="true">T_1</action>
<action enabled="true" Result="true">T_3</action>
Instead I am getting all nodes from the entire xml having attribute [@Result='true']. i.e:
<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>
My Code:
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;
}
}
Please help me with the solution Or any other way to get the desired result...Thanks!