📜  XPath-谓词(1)

📅  最后修改于: 2023-12-03 14:48:39.326000             🧑  作者: Mango

XPath 谓词

XPath 是一种用于在 XML 文件中查找节点的语言,其路径表达式类似于文件系统的路径表达式。XPath 路径可以包含谓词(predicate),用于限制节点的搜索范围,从而缩小查询结果的数量。

什么是 XPath 谓词?

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 谓词,我们可以快速查询并定位到需要的节点。