2

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

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

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

谢谢!

4

1 回答 1

1

这个 XPath,

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

将选择FILE文档中任何满足谓词条件的元素。

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

如果自身下方的结构发生FILE变化,您可以使用.//“跳过”这些变化。例如,

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

将忽略 和 之间FILEauthor路径ref/@year

于 2018-08-27T18:34:31.773 回答