我需要一个Xpath查询来查找具有某些节点的XML文件。节点位于XML文件中不同级别的不同父级下。因此,就像我想使用节点“ author”和“ ref year = 1999”来恢复以下文件一样。
<FILE>
<header>
<author> X </author>
</header>
<text>
<type>
<ref year="1999">
</type>
</text>
</FILE>
唯一的区别是我正在使用的XML具有更为复杂的结构,因此,如果我可以使用“ //”在任何位置查找节点而不是使用确切路径,那将是理想的选择。 我不能使用|运算符来加入两个节点,因为我想找到同时满足两个条件而不只是一个条件的文件。
谢谢!
答案 0 :(得分:1)
此XPath,
//FILE[header/author="X" and text/type/ref/@year="1999"]
将在文档中符合谓词条件的任何位置选择FILE
个元素。
如果要使用析取谓词,请使用or
而不是and
。 (请注意,|
用于连接节点集。)and
,or
和not()
的组合可用于表示谓词中的完整布尔表达式。>
如果FILE
下的结构本身发生变化,则可以使用.//
来“跳过”变化。例如,
//FILE[.//author="X" and .//ref/@year="1999"]
将忽略FILE
与author
和ref/@year
中的每一个之间的路径。