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文档节点内 ...
随机推荐
- 为产品的一堆Visual Studio解决方案引入Directory.Build.props
为什么需要Directory.Build.props? 一个产品有了多个甚至几十个解决方案之后,每个解决方案里面的项目可能会引用一个dll包的不同版本,因此需要集中管理dll包的版本号. .NET的D ...
- Gitlab的部署
# Gitlab sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish ...
- 【Azure APIM】APIM self-host 部署在K8S中,如何更换证书呢?
问题描述 APIM self-host(自建网关)部署在K8S中,如何在本地上传及更换证书呢? 问题解答 如果使用Self-host网关,则不支持使用上传到 APIM的 CA 根证书验证服务器和客户端 ...
- 【Azure 媒体服务】记使用 Media Service 的官网示例代码 Audio Analyzer 出现卡顿在 Creating event processor host .. 直到 Timeout 问题
问题描述 在使用Azure Media Service的官网示例 (media-services-v3-java --> AudioAnalytics --> AudioAnalyzer ...
- C++ STL 容器-array类型
C++ STL 容器-array类型 array是C++11STL封装的数组,内存分配在栈中stack,绝对不会重新分配,随机访问 创建和初始化 // 下面的等同于int a[10]; std::ar ...
- Jmeter Xpath提取器你了解多少?
- config.baseUrl.dev 变量 转移到 .env.local 中
config.baseUrl.dev 变量 转移到 .env.local 中 上下文 vue前端开发 问题 多人写代码的时候,会提交config.js里面的配置文件 解决方案 在根目录创建 .env. ...
- F12 Preserve log 查看之前的api接口返回数据,只有火狐浏览器能用
F12 Preserve log 查看之前的api接口返回数据,只有火狐浏览器能用
- guava和redis 都是缓存用的,不过redis要起服务,guava不用起服务
guava和redis 都是缓存用的,不过redis要起服务,guava不用起服务
- SourceTree 合并DEV分支到master
SourceTree 合并DEV分支到master 1 切换到master分支 2 右键dev分支,选择 合并dev至当前分支 3 提交代码