Xpath查询具有不同级别的多个节点

时间:2018-08-27 17:20:31

标签: xml xpath xpathquery

我需要一个Xpath查询来查找具有某些节点的XML文件。节点位于XML文件中不同级别的不同父级下。因此,就像我想使用节点“ author”和“ ref year = 1999”来恢复以下文件一样。

<FILE>
    <header>
        <author> X </author>
    </header>
    <text>
        <type>
            <ref year="1999">
        </type>
    </text>
</FILE>

唯一的区别是我正在使用的XML具有更为复杂的结构,因此,如果我可以使用“ //”在任何位置查找节点而不是使用确切路径,那将是理想的选择。 我不能使用|运算符来加入两个节点,因为我想找到同时满足两个条件而不只是一个条件的文件。

谢谢!

1 个答案:

答案 0 :(得分:1)

此XPath,

//FILE[header/author="X" and text/type/ref/@year="1999"]

将在文档中符合谓词条件的任何位置选择FILE个元素。

如果要使用析取谓词,请使用or而不是and。 (请注意,|用于连接节点集。)andornot()的组合可用于表示谓词中的完整布尔表达式。

如果FILE下的结构本身发生变化,则可以使用.//来“跳过”变化。例如,

//FILE[.//author="X" and .//ref/@year="1999"]

将忽略FILEauthorref/@year中的每一个之间的路径。