1/10

XPath(XML Path Language)是一种在XML和HTML文档中查找信息的语言,用于在文档结构中选择节点或节点集。以下是XPath的主要使用方法和常见语法总结:

1. 基本概念

  • 节点(Node):XPath中,文档被视为一个节点树,包括元素节点、属性节点、文本节点等。
  • 路径表达式(Path Expression):用于定位文档中的节点或节点集。

2. 基本语法

绝对路径与相对路径

  • 绝对路径:从根节点开始,以“/”开头。例如:
    xpath复制
    /html/body/div
    表示选择从根节点开始的html元素下的body元素下的div元素。
  • 相对路径:从当前节点开始,不以“/”开头。例如:
    xpath复制
    .//div
    表示从当前节点选择所有后代中的div元素。

路径分隔符

  • /:表示根节点或路径分隔符。
  • //:在当前节点选择文档中的节点,而不考虑它们的位置。例如:
    xpath复制
    //div
    表示选择文档中所有div元素。

3. 常用选择方法

选择特定节点

  • 元素节点
    xpath复制
    div
    选择所有div元素。
  • 属性节点
    xpath复制
    @class
    选择所有class属性。
  • 文本节点
    xpath复制
    text()
    选择文本内容。

选择特定位置的节点

  • 子节点
    xpath复制
     
/html/body/p
复制
选择`html`下的`body`下的`p`元素。
- **后代节点**:
```xpath
/html//p
选择html下所有p元素,无论其嵌套层级。
  • 父节点
    xpath复制
    ..
    选择当前节点的父节点。
  • 当前节点
    xpath复制
    .
    选择当前节点。
  • 根节点
    xpath复制
    /
    选择文档的根节点。

4. 使用谓语(Predicates)

谓语用于进一步限定选择的节点,放在方括号[]中。
  • 按位置选择
    xpath复制
    //div[1]
    选择第一个div元素。
  • 按属性选择
    xpath复制
    //div[@class='example']
    选择所有class属性值为examplediv元素。
  • 按文本内容选择
    xpath复制
    //div[text()='Hello']
    选择文本内容为Hellodiv元素。

5. 通配符

  • *:匹配任何元素节点。
    xpath复制
    //*
    选择文档中的所有元素节点。
  • @*:匹配任何属性节点。
    xpath复制
    //@*
    选择文档中的所有属性节点。

6. 轴(Axes)

轴用于定义选择的方向,常见的轴包括:
  • child:选择子节点。
    xpath复制
    child::div
  • parent:选择父节点。
    xpath复制
    parent::*
  • ancestor:选择祖先节点。
    xpath复制
    ancestor::div
  • descendant:选择后代节点。
    xpath复制
    descendant::div
  • following-sibling:选择后续兄弟节点。
    xpath复制
    following-sibling::div
  • preceding-sibling:选择前面兄弟节点。
    xpath复制
    preceding-sibling::div

7. 逻辑运算符

  • and:逻辑与。
    xpath复制
    //div[@class='example' and @id='test']
  • or:逻辑或。
    xpath复制
    //div[@class='example' or @id='test']
  • not():逻辑非。
    xpath复制
    //div[not(@class)]

8. 函数

XPath提供了许多内置函数,用于更复杂的查询:
  • contains():检查文本或属性是否包含特定值。
    xpath复制
    //div[contains(@class, 'example')]
  • starts-with():检查文本或属性是否以特定值开头。
    xpath复制
    //div[starts-with(@class, 'ex')]
  • count():计算节点的数量。
    xpath复制
    count(//div)
  • normalize-space():去除文本节点中的多余空格。
    xpath复制
    normalize-space(//div)

9. 组合使用

XPath可以组合多种语法和方法来实现复杂的查询。例如:
xpath复制
//div[@class='example' and contains(text(), 'Hello')]
选择所有classexample且文本内容包含Hellodiv元素。

10. 注意事项

  • 大小写敏感:XPath对元素名、属性名等是大小写敏感的。
  • 默认命名空间:如果文档使用了默认命名空间,可能需要额外的处理来匹配元素。
  • 性能优化:尽量使用更具体的路径表达式,避免使用过于宽泛的//,以提高查询性能。
XPath是一种非常强大的工具,通过灵活运用上述方法,可以高效地从XML或HTML文档中提取所需信息。
posted @ 2025-01-10 18:33  Hbro  阅读(19)  评论(0)    收藏  举报