0
使用下面的XML如何解析和使用XPATH
<node1>
<node2>
<node3>
<id>ABC-123</id>
<condition>
<task name="task1" operation="and" value="abc" />
<task name="task2" operation="and" value="efg" />
<task name="task3" operation="and" value="hij" />
<task name="task4" operation="or" value="klm" />
<task name="task5" operation="and" value="nop" />
<task name="task6" value="uvw" />
</condition>
</node3>
<node3>
<id>XYZ-987</id>
<condition>
<task name="task1" operation="and" value="abc" />
<task name="task2" operation="and" value="efg" />
<task name="task5" operation="and" value="nop" />
</condition>
</node3>
<node3>
<id>RST-567</id>
<condition>
<task name="task1" operation="and" value="abc" />
<task name="task2" operation="and" value="efg" />
<task name="task8" operation="and" value="jkl" />
<task name="task9" operation="and" value="rst" />
<task name="task10" value="xyz" />
</condition>
</node3>
<node3>
<id>PQR-345</id>
<condition>
<task name="task1" operation="and" value="ijk" />
<task name="task2" operation="and" value="klm" />
<task name="task8" operation="and" value="jkl" />
<task name="task9" operation="and" value="rst" />
</condition>
</node3>
</node2>
</node1>
我想ID = XYZ-987的条件名称=“任务1”,值=“ABC”名称从XML获取确切的结果= “task2”,value =“efg”AND name =“task5”,value =“nop”
我得到2个结果(ABC-123和XYZ-987)而不是1个(XYZ-987)。 使用下面的XPath表达式
/node1/node2/node3[condition/task[@name='task1' and @value='abc'] and condition/task[@name='task2' and @value='efg'] and condition/task[@name='task5' and @value='nop']]/id
我怎么能过滤这些结果2基于输入条件的大小和如上所述获得与恰好3个条件的条目?
参考XPATH executing complex queries来开发表达。
您是不是指'和count(条件/任务)= 3'? – har07
是的,添加计数我得到了结果 –
我的意思是没有发布XML中的'事件'元素,但突然你的答案有'计数(条件/事件)'在里面。这可能会让未来的访客感到困惑,你真的认为它还是它是一个错字? – har07