当前位置: 首页 > news >正文

6.3.1 软件->W3C XPath 1.0 标准(W3C Recommendation):XPath(XML Path Language)查询语言

一、XPath 核心定义

XPath 是专门为在 XML 文档中快速定位、选取节点(元素 / 属性 / 文本)设计的查询语言,你可以把它理解成:

  • XML 版的 “文件路径”:像你在电脑里用C:\文档\书籍\Python.pdf找到文件一样,XPath 用路径表达式定位 XML 中的某个节点
  • XML 版的 “数据库查询语句(SQL)”:能精准筛选出符合条件的节点(比如 “价格大于 100 的书籍”)

它是解析 XML 的核心工具,几乎所有 XML 解析库(Python 的 lxml、Java 的 XPathAPI)都支持 XPath,比单纯遍历 XML 节点效率高得多

二、XPath 核心概念:节点类型

在 XPath 中,XML 的每一部分都是 “节点”,核心节点类型:

节点类型示例(对应之前的 books.xml)说明
元素节点<book><title><library>XML 的标签,是最核心的节点
属性节点id="1"元素的属性(带@标识)
文本节点Python编程:从入门到实践元素内的文本内容
根节点/代表整个 XML 文档的根(不是<library><library>是根元素)

三、XPath 基础语法(核心路径表达式)

以之前的books.xml为例,先回顾文档结构:

<?xml version="1.0" encoding="UTF-8"?><library><!-- 根元素 --><bookid="1"><title>Python编程:从入门到实践</title><author>埃里克·马瑟斯</author><price>89.00</price></book><bookid="2"><title>Java核心技术</title><author>凯·霍斯特曼</author><price>129.00</price></book></library>

1. 基础路径(定位节点)

表达式含义示例(定位目标)
/从根节点开始(绝对路径)/library→ 定位根元素<library>
//从任意位置匹配节点(相对路径)//book→ 定位所有<book>元素(不管层级)
.当前节点//book/.→ 等同于//book
..父节点//title/..→ 定位所有<title>的父节点(即<book>
@选取属性//book/@id→ 定位所有<book>id属性

2. 筛选条件(谓语,用[]

可以给路径加条件,精准筛选节点:

表达式含义示例结果
//book[1]第一个<book>id=1 的 book
//book[last()]最后一个<book>id=2 的 book
//book[position()<2]位置小于 2 的 bookid=1 的 book
//book[price>100]价格 > 100 的 bookid=2 的 book
//book[@id='2']id 属性为 2 的 bookid=2 的 book

3. 通配符(匹配任意节点)

通配符含义示例
*任意元素节点/library/*→ 定位<library>下所有子元素(即所有 book)
@*任意属性节点//book/@*→ 定位所有 book 的所有属性(即所有 id)
node()任意类型节点//book/node()→ 定位 book 下所有节点(title/author/price)

4. 多路径匹配(用|

可以同时选取多个路径的节点:

//title | //price # 定位所有<title>和<price>节点

四、实战示例(Python + lxml 解析 XML + XPath)

XPath 需要配合解析库使用,Python 中lxml库对 XPath 支持最好(需先安装):

安装依赖

pipinstalllxml

完整代码

fromlxmlimportetree# 1. 加载XML文件(或字符串)xml_str=""" <?xml version="1.0" encoding="UTF-8"?> <library> <book id="1"> <title>Python编程:从入门到实践</title> <author>埃里克·马瑟斯</author> <price>89.00</price> </book> <book id="2"> <title>Java核心技术</title> <author>凯·霍斯特曼</author> <price>129.00</price> </book> </library> """# 解析XMLtree=etree.fromstring(xml_str)# 2. 用XPath定位节点(核心操作)# 示例1:获取所有book的id属性book_ids=tree.xpath("//book/@id")print("所有book的id:",book_ids)# 输出:['1', '2']# 示例2:获取价格>100的book的标题high_price_books=tree.xpath("//book[price>100]/title/text()")print("价格>100的书籍标题:",high_price_books)# 输出:['Java核心技术']# 示例3:获取第二个book的作者second_book_author=tree.xpath("//book[2]/author/text()")print("第二个book的作者:",second_book_author)# 输出:['凯·霍斯特曼']# 示例4:获取所有title和price的文本titles_and_prices=tree.xpath("//title/text() | //price/text()")print("所有标题和价格:",titles_and_prices)# 输出:['Python编程:从入门到实践', '89.00', 'Java核心技术', '129.00']

五、XPath 的使用场景

  1. XML 解析:快速提取 XML 中指定条件的数据(替代繁琐的遍历)
  2. 网页爬虫:XPath 是解析 HTML(HTML 本质是不严格的 XML)的核心工具,能精准定位网页中的元素(比如爬取商品标题、价格)
  3. 配置文件处理:快速修改 / 读取 XML 配置文件中的特定节点

总结

  1. XPath 是 XML 的路径查询语言,核心作用是快速定位 / 筛选 XML 中的元素、属性、文本节点,比手动遍历效率高
  2. XPath 的核心语法包括:/(绝对路径)、//(任意路径)、@(属性)、[](条件筛选)、|(多路径)
  3. 实际开发中,XPath 常配合解析库(如 Python 的 lxml)使用,是处理 XML/HTML 数据的必备技能
http://www.jsqmd.com/news/524348/

相关文章:

  • XSS攻防实战笔记:从反射、存储到DOM型的漏洞原理与靶场复现
  • Windows下Telepresence避坑全记录:从安装报错到成功连接k8s集群
  • YOLO入门(25.10)
  • 如何高效下载无水印抖音视频?开源工具全解析与实践指南
  • 线性分类器:从基础概念到逻辑运算的实战解析
  • Qt C++ Modbus实现,可直接用于项目,测试通过
  • Java多线程学习(六)
  • 20253312 实验一《Python程序设计》实验报告
  • 论文写作新利器:书匠策AI,让数据分析变得像呼吸一样自然!
  • 2026年生鲜配送软件应用白皮书 中央厨房数字化剖析 - 优质品牌商家
  • 2026.3.23
  • 智能文字提取新标杆:Text-Grab本地化OCR工具全解析
  • LLM批处理系统:自适应并发控制;断点续传与进度追踪
  • 书匠策AI:论文数据分析的“超级外挂”,让学术研究如虎添翼
  • CloudWatch 告警实战:CPU 飙了自动扩容,账单超了 Slack 通知
  • 2026年水泥预制烟道厂家实力推荐榜:矩形/机制/装配式/锅炉专用烟道,精选耐用建材与专业工艺解析 - 品牌企业推荐师(官方)
  • 2026年3月郑州搬家公司最新推荐:金水区搬家、上街区搬家、惠济区搬家、荥阳搬家、新密搬家、新郑搬家公司选择指南 - 海棠依旧大
  • 2026年体育学论文降AI率工具推荐:运动训练方向同学看过来
  • 论文写作新利器:书匠策AI,让数据分析“智”在必得!
  • Electron应用安装包定制指南:如何用NSH脚本打造个性化安装界面(附完整代码示例)
  • 川内制造业短期工招聘服务品牌评测报告:就近安排找工作/工厂劳务外包派遣/工厂劳务派遣外包/工厂直招找工作/当天入职劳务派遣/选择指南 - 优质品牌商家
  • 省电神器!STM32G030的ADC低功耗采样方案:TIMER+DMA+HAL库全配置指南
  • 书匠策AI:论文数据分析的“超级外挂”,让科研之路畅通无阻
  • PD-L1重组兔单抗如何助力肿瘤免疫治疗的机制研究与疗效评估?
  • 2026化妆品源头工厂趋势:从规模到价值的跃迁 - 速递信息
  • # 发散创新:用 WebSocket 实现实时聊天系统的全链路架构设计
  • 企业在豆包做AI推广联系哪家公司?专业服务商深度解析 - 品牌2026
  • vxe-table列头合并避坑指南:从基础配置到高级动态调整
  • 8大需求分析软件选型指南:2026文档自动化新趋势解读
  • # 20253202 2025-2026-2 《Python程序设计》实验1报告