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

代表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元素的title和price元素。/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,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
XML文档节点导航与选择指南的更多相关文章
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- Java获取XML节点总结之读取XML文档节点
dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...
- solr schema.xml文档节点配置
首先,讲解一下/usr/local/solr/collection1/conf/schema.xml的配置,此文档功能类似于配置索引数据库. Field:类似于数据库字段的属性(此文统一使用用“字段” ...
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
以下是代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...
- XPath操作XML文档
NET框架下的Sytem.Xml.XPath命名空间提供了一系列的类,允许应用XPath数据模式查询和展示XML文档数据. 3.1XPath介绍 主要的目的是在xml1.0和1.1文档节点树种定位节点 ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- DOM和SAX是应用中操纵XML文档的差别
查看原文:http://www.ibloger.net/article/205.html DOM和SAX是应用中操纵XML文档的两种主要API.它们分别解释例如以下: DOM.即Do ...
- 使用JAXP对XML文档进行DOM解析
import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers. ...
- 2.1 使用JAXP 对 xml文档进行DOM解析
//使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...
- C#XmlHelper帮助类操作Xml文档的通用方法汇总
前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内 ...
随机推荐
- 【LeetCode排序专题02】最小k个数,关于快速排序的讨论
最小k个数 https://leetcode.cn/problems/smallest-k-lcci/ 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个 ...
- 一个利用go反向代理解决api转发的例子(go反向代理)
实现的效果: 如果访问的url路径是类似 /163/ 或 /163/debian 的形式,则转发到163开源镜像服务器 直接上代码: package main import ( "fmt& ...
- 从零开始学Spring Boot系列-集成mybatis
在Spring Boot的应用开发中,MyBatis是一个非常流行的持久层框架,它支持定制化SQL.存储过程以及高级映射.在本篇文章中,我们将学习如何在Spring Boot项目中集成MyBatis, ...
- 借助 Terraform 功能协调部署 CI/CD 流水线-Part 2
在第一部分的文章中,我们介绍了3个步骤,完成了教程的基础配置: 使用 Terraform 创建 AWS EKS Infra 在 EKS 集群上部署 ArgoCD 及其依赖项 设置 Bitbucket ...
- ACS 构词法 + 44个后缀 记忆方法
抖音号:九词君-不用语法学好英语
- ble无线智能工牌解决方案技术解析
场景需求 在无线智能工牌领域,团队做了几个实际场景的解决方案之后,积累了一些行业需求经验和技术经验.这里做一个总结,算是一种沉淀吧.场景一:居家养老,医护和护工人员定期上门服务,根据工作时长来发工资 ...
- SQL注入的原理与分析
SQL注入的原理与分析 1.SQL注入的本质 2.部分SQL语句 3.SQL注入流程 一.SQL注入的本质 SQL注入的本质,就是把用户输入的数据当作代码执行 Web应用程序对用户输入的数据校验处理不 ...
- ubuntu切换root到user
目前知道: 从root用户切回user用户有三种方法: 1.su user (user是你自己安装时候的用户名) 2.直接输入exit 3.ctrl+D组合键
- RelationNet:学习目标间关系来增强特征以及去除NMS | CVPR 2018
论文基于NLP的注意力机制提出了目标关系模块,通过与其它目标的比对增强当前目标的特征,而且还可以代替NMS进行端到端的重复结果去除,思想十分新颖,效果也不错 来源:晓飞的算法工程笔记 公众号 论文 ...
- 可变形卷积系列(一) 打破常规,MSRA提出DCNv1 | ICCV 2017 Oral
论文提出可变形卷积帮助模型高效地学习几何变换能力,能够简单地应用到分类模型和检测模型中,思想新颖,效果显著,十分值得学习 来源:晓飞的算法工程笔记 公众号 论文: Deformable Convo ...