首页 > 其他分享 >XML文档节点导航与选择指南

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

时间:2024-04-08 22:44:51浏览次数:23  
标签:XML XPath 选择 book 文档 节点

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

XPath的基本特点

image

  • 代表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,关注后即可获取最新文章推送

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

标签:XML,XPath,选择,book,文档,节点
From: https://www.cnblogs.com/xiaowange/p/18122835

相关文章

  • maya获取所有节点的初始位置
    目录maya获取所有节点的初始位置获取所有节点的动画旋转位置maya获取所有节点的初始位置importmaya.cmdsascmdsdefget_initial_pose(root_node):"""获取根节点及其所有子节点的初始姿态位置。参数:-root_node:根节点的名称。返回值:......
  • 【附源码】JAVA计算机毕业设计校园技术交流与信息分享系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在信息技术迅猛发展的当今时代,校园作为知识传播和技术创新的重要场所,急需一个高效的技术交流与信息分享系统来促进学术资源的整合和优化。随着互联网技......
  • 【附源码】JAVA计算机毕业设计校园二手交易(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着科技的不断进步和智能手机的普及,移动应用已成为人们生活不可或缺的一部分。特别是在校园内,学生们对于便捷的服务需求日益增长。在这样的背景下,校园......
  • Acwing 681. 疏散人群(dfs)(记录根节点下有几个子节点)
    输入样例:62132435261输出样例:4#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLN=100200,M=2020;constLLmod=998244353;vector<LL>g[N];LLsum[N];LLdfs(LLidx,LLfa){LL......
  • typescript学习文档(二)
    1、安装typescript全局安装:npminstall-gtypescript检查是否安装成功(出现版本号表示安装成功):tsc-v如果使用tsc指令出现如下错误:解决办法:以管理员的身份运行vscode终端执行:get-ExecutionPolicy,结果:Restricted终端执行:set-ExecutionPolicyRemoteSigned终端执行:get......
  • .net xml序列化与xml反序列化
    序列化stringxmlStr="";vardto=newReqDto(){ErrorCode=200,ReqName="test"};XmlSerializerserializer=newXmlSerializer(typeof(ReqDto));using(StringWritertextWriter=newStringWriter()){serializer.Serialize(textWr......
  • 递归寻找节点
    publicclassFileNode:PropertyChangedBase{publicFileNode(){this.Files=newObservableCollection<FileNode>();this.IsFile=false;}privatestring_name=string.Empty;......
  • WPS二次开发专题:WPS SDK实现文档打印功能
      作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397)在办公场景或者家教场景中经常碰到需要对文档进行打印的能力,今天给大家带来一篇如何通过WPSSDK调用WPS打印接口实现文档......
  • C#实现的下拉多选框,下拉多选树,多级节点
    今天给大家上个硬货,下拉多选框,同时也是下拉多选树,支持父节点跟子节点!该控件是基于Telerik控件封装实现的,所以大家在使用的过程中需要引用Telerik.WinControls.dll、Telerik.WinControls.UI.dll,还有一些相关的类库,大家有需要的可以去网上自己找,另外我也会把一些动态库放到CSDN......
  • 单节点部署K8S
    K使用Kubeadm搭建单节点安装前注意进行快照,方便多次安装练习。虚拟机基础信息系统:Ubuntu20.04.6LTS内核:5.15.0-67-generic硬盘:60G内存:12GCPU:4C4U本次安装参考博客地址:https://glory.blog.csdn.net/article/details/120606787安装前准备1.关闭防火墙systemctlstat......