简单说,xpath就是选择XML文件中节点的方法。

所谓节点(node),就是XML文件的最小构成单位,一共分成7种。
- element(元素节点)
- attribute(属性节点)
- text (文本节点)
- namespace (名称空间节点)
- processing-instruction (处理命令节点)
- comment (注释节点)
- root (根节点)
xpath可以用来选择这7种节点。不过,下面的笔记只涉及最常用的第一种element(元素节点),因此可以将下文中的节点和元素视为同义词。
一、xpath表达式的基本格式
xpath通过"路径表达式"(Path Expression)来选择节点。在形式上,"路径表达式"与传统的文件系统非常类似。
# 斜杠(/)作为路径内部的分割符。
# 同一个节点有绝对路径和相对路径两种写法。
# 绝对路径(absolute path)必须用"/"起首,后面紧跟根节点,比如/step/step/...。
# 相对路径(relative path)则是除了绝对路径以外的其他写法,比如 step/step,也就是不使用"/"起首。
# "."表示当前节点。
# ".."表示当前节点的父节点
二、选择节点的基本规则
- nodename(节点名称):表示选择该节点的所有子节点
- "/":表示选择根节点
- "//":表示选择任意位置的某个节点
- "@": 表示选择某个属性
三、选择节点的实例
先看一个XML实例文档。
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book> </bookstore>
[例1]
bookstore :选取 bookstore 元素的所有子节点。
[例2]
/bookstore :选取根节点bookstore,这是绝对路径写法。
[例3]
bookstore/book :选取所有属于 bookstore 的子元素的 book元素,这是相对路径写法。
[例4]
//book :选择所有 book 子元素,而不管它们在文档中的位置。
[例5]
bookstore//book :选择所有属于 bookstore 元素的后代的 book 元素,而不管它们位于 bookstore 之下的什么位置。
[例6]
//@lang :选取所有名为 lang 的属性。
四、xpath的谓语条件(Predicate)
所谓"谓语条件",就是对路径表达式的附加条件。
所有的条件,都写在方括号"[]"中,表示对节点进行进一步的筛选。
[例7]
/bookstore/book[1] :表示选择bookstore的第一个book子元素。
[例8]
/bookstore/book[last()] :表示选择bookstore的最后一个book子元素。
[例9]
/bookstore/book[last()-1] :表示选择bookstore的倒数第二个book子元素。
[例10]
/bookstore/book[position()<3] :表示选择bookstore的前两个book子元素。
[例11]
//title[@lang] :表示选择所有具有lang属性的title节点。
[例12]
//title[@lang='eng'] :表示选择所有lang属性的值等于"eng"的title节点。
[例13]
/bookstore/book[price] :表示选择bookstore的book子元素,且被选中的book元素必须带有price子元素。
[例14]
/bookstore/book[price>35.00] :表示选择bookstore的book子元素,且被选中的book元素的price子元素值必须大于35。
[例15]
/bookstore/book[price>35.00]/title :表示在例14结果集中,选择title子元素。
[例16]
/bookstore/book/price[.>35.00] :表示选择值大于35的"/bookstore/book"的price子元素。
五、通配符
# "*"表示匹配任何元素节点。
# "@*"表示匹配任何属性值。
# node()表示匹配任何类型的节点。
[例17]
//* :选择文档中的所有元素节点。
[例18]
/*/* :表示选择所有第二层的元素节点。
[例19]
/bookstore/* :表示选择bookstore的所有元素子节点。
[例20]
//title[@*] :表示选择所有带有属性的title元素。
六、选择多个路径
用"|"选择多个并列的路径。
[例21]
//book/title | //book/price :表示同时选择book元素的title子元素和price子元素。
# xpath
# 简介
# JAVA通过XPath解析XML性能比较详解
# java selenium XPath 定位实现方法
# java使用xpath解析xml示例分享
# java使用xpath和dom4j解析xml
# 深入XPath的详解以及Java示例代码分析
# java编程之xpath介绍
# 这是
# 多个
# 而不
# 文档
# 第一个
# 则是
# 两种
# 第二个
# 写在
# 文件系统
# 第一种
# 先看
# 最常用
# 形式上
# 可以用来
# 第二层
# 附加条件
# 与传统
# Expression
# Path
相关文章:
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何通过西部数码建站助手快速创建专业网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何零成本快速生成个人自助网站?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
如何登录建站主机?访问步骤全解析
如何构建满足综合性能需求的优质建站方案?
制作网页的网站有哪些,电脑上怎么做网页?
建站之星各版本价格是多少?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
建站主机服务器选型指南与性能优化方案解析
网站制作的步骤包括,正确网址格式怎么写?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何在建站宝盒中设置产品搜索功能?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
制作网站的模板软件,网站怎么建设?
代购小票制作网站有哪些,购物小票的简要说明?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
制作网站外包平台,自动化接单网站有哪些?
活动邀请函制作网站有哪些,活动邀请函文案?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何挑选优质建站一级代理提升网站排名?
制作农业网站的软件,比较好的农业网站推荐一下?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何选择可靠的免备案建站服务器?
如何用免费手机建站系统零基础打造专业网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
建站VPS能否同时实现高效与安全翻墙?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
建站之星如何实现网站加密操作?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
小型网站制作HTML,*游戏网站怎么搭建?
如何快速上传自定义模板至建站之星?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
制作网站的软件免费下载,免费制作app哪个平台好?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
如何规划企业建站流程的关键步骤?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
网页设计网站制作软件,microsoft office哪个可以创建网页?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
*请认真填写需求信息,我们会在24小时内与您取得联系。