XPath从入门到精通

举报
福州司马懿 发表于 2024/06/30 12:08:08 2024/06/30
【摘要】 前言XPath 是一种在 XML 文档中查找信息的语言。它可用来在 XML 文档中对元素和属性进行遍历。XPath 的主要目的是简化对 XML 文档的导航。通过 XPath,我们可以编写表达式来选择 XML 文档中的节点或节点集。 XPath 简介XPath 是 XML Path Language 的缩写,用于在 XML 文档中选择节点。这些节点可以通过元素名、属性或节点在文档中的位置来选...

前言

XPath 是一种在 XML 文档中查找信息的语言。它可用来在 XML 文档中对元素和属性进行遍历。XPath 的主要目的是简化对 XML 文档的导航。通过 XPath,我们可以编写表达式来选择 XML 文档中的节点或节点集。

XPath 简介

XPath 是 XML Path Language 的缩写,用于在 XML 文档中选择节点。这些节点可以通过元素名、属性或节点在文档中的位置来选取。XPath 是 W3C 标准的一部分,并且被多种编程语言所支持,如 XSLT、XQuery 以及许多编程语言中的 XML 解析库。

XPath 节点

在 XPath 中,有七种类型的节点:元素节点、属性节点、文本节点、命名空间节点、处理指令节点、注释节点和文档(根)节点。其中,元素节点和属性节点是最常用的。

  • 元素节点:XML 文档中的标签,如 <book>
  • 属性节点:元素的附加信息,总是出现在元素的开始标签中,如 <book id="123"> 中的 id

XPath 语法

XPath 的基本语法是由路径表达式来描述的。这些表达式以斜杠(/)或双斜杠(//)开始,后面跟着一系列的元素名和谓词。

  • 绝对路径:从根节点开始的路径,如 /bookstore/book
  • 相对路径:从当前节点开始的路径,如 book/title
  • 选择所有节点:使用通配符 *,如 /bookstore/* 选择 bookstore 元素下的所有子元素。
  • 选择当前节点:使用点号 .,如 ./title 选择当前节点的 title 子元素(但 ./ 常常可以省略)。
  • 选择父节点:使用 ..,如 ../ 选择当前节点的父节点。

XPath 轴

XPath 轴定义了相对于当前节点的节点集。例如,child 轴选择当前节点的所有子节点,而 parent 轴选择当前节点的父节点。

  • child:选择所有子元素,如 child::book(简写为 book)。
  • parent:选择父元素,如 parent::*(简写为 ..)。
  • attribute:选择属性,如 attribute::id(简写为 @id)。
  • namespace:选择命名空间节点。
  • descendant:选择当前元素的所有后代元素(子、孙等),如 descendant::book(简写为 //book)。
  • ancestor:选择当前元素的所有先辈(父、祖父等)。
  • descendant-or-self:选择当前元素和所有后代元素。
  • ancestor-or-self:选择当前元素和所有先辈元素。
  • preceding-sibling:选择当前元素之前的所有同级元素。
  • following-sibling:选择当前元素之后的所有同级元素。

XPath 运算符

XPath 支持多种运算符,用于在路径表达式中组合和筛选节点。

  • 关系运算符<, >, <=, >=
  • 相等运算符=, !=
  • 逻辑运算符and, or
  • 字符串函数:如 contains(), starts-with(), substring(), concat()
  • 数值函数:如 sum(), avg(), round(), floor(), ceiling()

XPath 实例

假设我们有以下的 XML 文档:

<bookstore>
  <book>
    <title lang="en">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <title lang="en">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>

举个例子

  1. 选择所有书的标题//book/titledescendant::book/title
  2. 选择第一本书的标题/bookstore/book[1]/title
  3. 选择价格高于 35 的书的标题//book[price>35]/title
  4. 选择所有带有英文标题的书的标题//book/title[@lang='en']

XPath 是一种强大的工具,可以帮助我们轻松地在 XML 文档中查找和提取信息。无论是编程人员还是数据分析师,都应该掌握 XPath 的基本知识和用法。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。