📅  最后修改于: 2023-12-03 14:48:39.326000             🧑  作者: Mango
XPath 是一种用于在 XML 文件中查找节点的语言,其路径表达式类似于文件系统的路径表达式。XPath 路径可以包含谓词(predicate),用于限制节点的搜索范围,从而缩小查询结果的数量。
XPath 谓词用于筛选 XML 文档中的节点。谓词是方括号 []
包裹的条件表达式,用于限制节点的选择。
下面是一个例子,筛选文档中所有名称为 book
的节点:
<library>
<book>
<title>Harry Potter and the Philosopher's Stone</title>
<author>J.K. Rowling</author>
</book>
<book>
<title>The Lord of the Rings</title>
<author>J.R.R. Tolkien</author>
</book>
<cd>
<title>A Night at the Opera</title>
<artist>Queen</artist>
</cd>
</library>
XPath 表达式:/library/book
结果:
<book>
<title>Harry Potter and the Philosopher's Stone</title>
<author>J.K. Rowling</author>
</book>
<book>
<title>The Lord of the Rings</title>
<author>J.R.R. Tolkien</author>
</book>
现在如果想仅仅选择文档中第一个 book
节点,可以使用下面的 XPath 表达式:
/library/book[1]
结果:
<book>
<title>Harry Potter and the Philosopher's Stone</title>
<author>J.K. Rowling</author>
</book>
这个谓词 [1]
表示选择第一个匹配的节点。类似地,我们也可以使用其他条件表达式,如 position()
、last()
、@attribute_name
等。
下面是一个谓词使用的示例:
<library>
<book category="children">
<title>Harry Potter and the Philosopher's Stone</title>
<author>J.K. Rowling</author>
</book>
<book category="fiction">
<title>The Lord of the Rings</title>
<author>J.R.R. Tolkien</author>
</book>
<book category="fiction">
<title>The Hitchhiker's Guide to the Galaxy</title>
<author>Douglas Adams</author>
</book>
<book category="non-fiction">
<title>The Elements of Style</title>
<author>William Strunk Jr.</author>
</book>
<book>
<title>The Da Vinci Code</title>
<author>Dan Brown</author>
</book>
</library>
选择 category
属性值为 "fiction"
的 book
节点:
/library/book[@category='fiction']
选择位于 category
属性值为 "fiction"
的 book
节点的后面的 book
节点:
/library/book[@category='fiction']/following-sibling::book[1]
选择第二个 book
节点:
/library/book[2]
选择最后一个 book
节点:
/library/book[last()]
XPath 谓词是用于限制节点搜索范围的条件表达式。它是 XPath 路径表达式的一部分,可以用于筛选 XML 文档中的节点。通过灵活运用 XPath 谓词,我们可以快速查询并定位到需要的节点。