XPath从入门到精通
【摘要】 前言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>
举个例子
- 选择所有书的标题:
//book/title
或descendant::book/title
- 选择第一本书的标题:
/bookstore/book[1]/title
- 选择价格高于 35 的书的标题:
//book[price>35]/title
- 选择所有带有英文标题的书的标题:
//book/title[@lang='en']
XPath 是一种强大的工具,可以帮助我们轻松地在 XML 文档中查找和提取信息。无论是编程人员还是数据分析师,都应该掌握 XPath 的基本知识和用法。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)