XML文档节点导航与选择指南

小万哥
• 阅读 42

XPath(XML Path Language)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。

XPath的基本特点

XML文档节点导航与选择指南

  • 代表XML路径语言: XPath是一种用于在XML文档中导航和选择节点的语言。

  • 路径样式语法: XPath使用路径表达式的“路径样式”语法来标识和导航XML文档中的节点。

  • 包含200多个内置函数: XPath包含200多个内置函数,可用于处理字符串、数值、布尔值、日期和时间等。

  • XSLT的主要组成部分: XPath是XSLT(可扩展样式表语言转换)标准的主要组成部分,用于在XML文档中选择和操作数据

XPath路径表达式

XPath使用路径表达式来选择XML文档中的节点或节点集。这些路径表达式类似于在传统计算机文件系统中使用的路径表达式。

例如,/bookstore/book/title 是一个XPath路径表达式,表示选择根元素是bookstore的子元素book的子元素title

XPath标准函数

XPath包括200多个内置函数,用于处理不同类型的数据。这些函数涵盖了字符串值、数值、布尔值、日期和时间比较、节点操作、序列操作等。

XPath表达式也可以在多种编程语言中使用,如JavaScript、Java、XML Schema、PHP、Python、C和C++等。

XPath用于XSLT

XPath是XSLT标准的主要组成部分,它与XSLT一起用于对XML文档进行转换和样式处理。具有XPath知识可以充分发挥XSLT的强大功能

XPath节点

在XPath中,有七种节点:元素、属性、文本、命名空间、处理指令、注释和根节点。XML文档被视为节点树,树的最顶层元素称为根元素。

XPath术语

  • 节点(Node): 在XPath中,有七种节点,包括元素、属性、文本、命名空间、处理指令、注释和根节点。XML文档被视为节点树,树的最顶层元素称为根元素。

  • 原子值(Atomic Value): 原子值是没有子节点或父节点的节点。例如,字符串或数字。

  • 项目(Item): 项目可以是原子值或节点。

节点之间的关系

在XPath中,节点之间有不同的关系:

  • 父节点(Parent Node): 每个元素和属性都有一个父节点。

  • 子节点(Child Node): 元素节点可以有零、一个或多个子节点。

  • 同级节点(Sibling Node): 具有相同父节点的节点。

  • 祖先节点(Ancestor Node): 节点的父节点、父节点的父节点等。

  • 后代节点(Descendant Node): 节点的子节点、子节点的子节点等。

XPath语法

XPath使用路径表达式在XML文档中选择节点。以下是一些常用的XPath路径表达式:

  • nodename:选择所有名称为 "nodename" 的节点。
  • /:从根节点选择。
  • //:选择文档中与选择匹配的当前节点的位置无关的节点。
  • .:选择当前节点。
  • ..:选择当前节点的父节点。
  • @:选择属性。

XPath示例文档

以下是我们将在下面的示例中使用的XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<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>

选择节点示例

以下是一些XPath路径表达式的示例及其结果:

  • /bookstore:选择所有名称为 "bookstore" 的节点。
  • /bookstore/book:选择根元素 bookstore 的子元素 book
  • //title[@lang='en']:选择所有具有值为 "en" 的 "lang" 属性的 title 元素。

选择未知节点

XPath通配符可用于选择未知的XML节点:

  • *:匹配任何元素节点。
  • @*:匹配任何属性节点。
  • node():匹配任何类型的节点。

例如,/bookstore/* 选择 bookstore 元素的所有子元素节点。

选择多个路径

通过在XPath表达式中使用 | 运算符,您可以选择多个路径:

  • //book/title | //book/price:选择所有 book 元素的 titleprice 元素。

  • /bookstore/book/title | //price:选择 bookstore 元素的 book 元素的 title 元素 和 文档中的所有 price 元素。

XPath Axes(轴)

XML示例文档

以下是我们将在下面的示例中使用的XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<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>

XPath轴

在XPath中,轴表示与上下文(当前)节点的关系,并用于在树上相对于该节点定位其他节点。以下是常用的XPath轴及其描述:

  • ancestor: 选择当前节点的所有祖先(父、祖父等)。

  • ancestor-or-self: 选择当前节点的所有祖先(父、祖父等)以及当前节点本身。

  • attribute: 选择当前节点的所有属性。

  • child: 选择当前节点的所有子节点。

  • descendant: 选择当前节点的所有后代(子、孙等)。

  • descendant-or-self: 选择当前节点的所有后代(子、孙等)以及当前节点本身。

  • following: 选择当前节点结束标签之后的文档中的所有内容。

  • following-sibling: 选择当前节点之后的所有同级节点。

  • namespace: 选择当前节点的所有命名空间节点。

  • parent: 选择当前节点的父节点。

  • preceding: 选择文档中在当前节点之前出现的所有节点,但不包括祖先、属性节点和命名空间节点。

  • preceding-sibling: 选择当前节点之前的所有同级节点。

  • self: 选择当前节点。

位置路径表达式

位置路径可以是绝对的或相对的。绝对位置路径以斜杠(/)开头,而相对位置路径则不是。位置路径由一个或多个步骤组成,每个步骤之间用斜杠分隔。

以下是一些XPath位置路径表达式的示例及其结果:

  • /child::book:选择所有作为当前节点子元素的 book 节点。

  • /attribute::lang:选择当前节点的 lang 属性。

  • /child::*:选择当前节点的所有元素子节点。

  • /attribute::*:选择当前节点的所有属性。

  • /child::text():选择当前节点的所有文本节点子节点。

  • /child::node():选择当前节点的所有子节点。

  • /descendant::book:选择当前节点的所有 book 后代。

  • /ancestor::book:选择当前节点的所有 book 祖先。

  • /ancestor-or-self::book:选择当前节点的所有 book 祖先,如果当前节点本身是一个 book 节点,也选择当前节点本身。

  • /child::*/child::price:选择当前节点的所有 price 孙子节点。

XPath运算符

XPath表达式返回一个节点集、一个字符串、一个布尔值或一个数字。以下是XPath表达式中可用的运算符列表:

  • |:计算两个节点集。

  • +:加法。

  • -:减法。

  • *:乘法。

  • div:除法。

  • =:等于。

  • !=:不等于。

  • <:小于。

  • <=:小于或等于。

  • >:大于。

  • >=:大于或等于。

  • or:或。

  • and:与。

  • mod:取模(除法余数)。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

点赞
收藏
评论区
推荐文章
Irene181 Irene181
2年前
Python解析库lxml与xpath用法总结
本文主要围绕以xpath和lxml库进行展开:一、xpath概念、xpath节点、xpath语法、xpath轴、xpath运算符二、lxml的安装、lxml的使用、lxml案例一、xpath1.xpath概念XPath是一门在XML文档中查找信息的语言。XPath使用路径表达式在XML文档中进行导航。XPath包含一个标准函数库。XP
Python进阶者 Python进阶者
2年前
Python解析库lxml与xpath用法总结
本文主要围绕以xpath和lxml库进行展开:一、xpath概念、xpath节点、xpath语法、xpath轴、xpath运算符二、lxml的安装、lxml的使用、lxml案例一、xpath1.xpath概念XPath是一门在XML文档中查找信息的语言。XPath使用路径表达式在XML文档中进行导航。XPath包含一个标准函数库。XPat
Python进阶者 Python进阶者
3年前
Python解析库lxml与xpath用法总结
本文主要围绕以xpath和lxml库进行展开:一、xpath概念、xpath节点、xpath语法、xpath轴、xpath运算符二、lxml的安装、lxml的使用、lxml案例一、xpath1.xpath概念XPath是一门在XML文档中查找信息的语言。XPath使用路径表达式在XML文档中进行导航。XPath包含一个标
Python进阶者 Python进阶者
2年前
网页结构的简介和Xpath语法的入门教程
相信很多小伙伴已经听说过Xpath,之前小编也写过一篇关于Xpath的文章,感兴趣的小伙伴可以戳这篇文章以及。今天小编继续给大家介绍一些Xpath知识点,希望对大家的学习有帮助。1、Xpath让我们可以使用一种类似于Windows下的文件路径的方式,让我们可以定位到HTML或者XML结构中的具体元素。Xpath本身包含标一些准函数库,可以让我们的Xpath语
Stella981 Stella981
2年前
Javascript中的正则表达式
正则表达式提供了强大的字符串检索和操作的能力,这些能力在Javascript中有着比其他语言更广泛的应用。对于运行于浏览器环境中的Javascript,HTML文档的DOM操作和样式操作是其主要任务之一,正则表达式的非凡能力正可以应用于此,如:操作DOM节点的内容、解析元素选择器、根据属性值过滤和匹配元素等等。通常总是存在其它方式实现这些操作,但正则表达式可
Stella981 Stella981
2年前
Python+Selenium练习篇之5
前面介绍了,XPath,id,class,linktext,partiallinktext,tagname,name七大元素定位方法,本文介绍webdriver支持的最后一个方法:by\_css。css和XPath类似,也需要掌握一些语法,才能写出正确的,完整的css选择表达式。相关脚本代码如下:codingu
京东云开发者 京东云开发者
5个月前
Jayway JsonPath-提取JSON文档内容的Java DSL | 京东物流技术团队
介绍JsonPath是一种能够提取部分JSON文档属性、对象、数组的语法,支持条件过滤、数学运算、字符串处理等功能。JsonPath与JSON文档就像XPath表达式与XML文档结合使用一样。由于JSON结构通常是匿名的,并不一定和XML一样具有“根成员对
小万哥 小万哥
1个月前
XML 简介及用法详解
XML是一种用于存储和传输数据的与软件和硬件无关的工具。什么是XML?XML代表eXtensibleMarkupLanguage(可扩展标记语言)。XML是一种与HTML非常相似的标记语言。XML被设计用于存储和传输数据。XML被设计成具有自我描述性。XM
小万哥 小万哥
1个月前
DOM(文档对象模型):理解网页结构与内容操作的关键技术
DOM(文档对象模型)定义了一种访问和操作文档的标准。它是一个平台和语言无关的接口,允许程序和脚本动态访问和更新文档的内容、结构和样式。HTMLDOM用于操作HTML文档,而XMLDOM用于操作XML文档。HTMLDOM示例通过ID获取并修改HTML元素的
小万哥 小万哥
3星期前
学习 XSLT:XML文档转换的关键
XSL(eXtensibleStylesheetLanguage)是一种用于XML的样式语言。XSL(T)语言XSLT是一种用于转换XML文档的语言。XPath是一种用于在XML文档中导航的语言。XQuery是一种用于查询XML文档的语言。它始于XSLXS