XPath

本文介绍了 XPath 的基本使用方法,包括如何选取文档中的不同节点类型,如父元素、子元素、先辈元素、后代元素及同级元素等。同时,还详细解释了如何利用 XPath 表达式来筛选具有特定条件的节点。
 
取父元素
//div[@id='navfirst']/parent::*
 
取子元素
//div[@id='navfirst']/child::*
 
取先辈元素
//div[@id='navfirst']/ancestor::*
 
取后代元素
//div[@id='navfirst']/descendant::*
 
取之前的同级元素

//div[@id='navfirst']/preceding-sibling::div

 
取后续的同级元素
//div[@id='navfirst']/following-sibling::div
 
表达式描述
nodename选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。
 
/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3]选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang]选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng']选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00]选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。
 
轴名称结果
ancestor选取当前节点的所有先辈(父、祖父等)。
ancestor-or-self选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
attribute选取当前节点的所有属性。
child选取当前节点的所有子元素。
descendant选取当前节点的所有后代元素(子、孙等)。
descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
following选取文档中当前节点的结束标签之后的所有节点。
namespace选取当前节点的所有命名空间节点。
parent选取当前节点的父节点。
preceding选取文档中当前节点的开始标签之前的所有节点。
preceding-sibling选取当前节点之前的所有同级节点。
self选取当前节点。
 
例子结果
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 孙节点。
 
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
09-26
XPath 即 XML 路径语言(XML Path Language),是一种用于在 XML 或 HTML 文档中定位元素的查询语言。以下是关于 XPath 的详细介绍和使用方法: ### 简介 XPath 基础教程适合初学者,能帮助学习者掌握 XPath 元素定位的基本原理和常用技巧。学习完相关课程后,可熟练使用 XPath 在 HTML 或 XML 文档中定位元素,为后续的 Web 自动化测试、数据提取等工作打下坚实基础 [^1]。 ### 使用方法 - **基本路径表达式**: - `/title`:表示根节点下的所有 `title` 标签。 - `//div`:表示根节点下的所有 `div` 标签。 - **谓语(Predicates)**:用于筛选节点。例如 `./div[@class="text"]` 表示当前节点下,属性 `class` 为 `"text"` 的所有 `div` 节点。而 `./div[@class="text"].text()` 则是获取这些 `div` 节点的文本内容 [^2]。 ### 应用场景 - **Web 爬虫**:从网页中提取特定的数据,如新闻标题、商品价格等。 - **Web 自动化测试**:定位页面元素,模拟用户操作,如点击按钮、输入文本等。 ### 代码示例 以下是使用 Python 和 `lxml` 库来演示 XPath 的使用: ```python from lxml import etree # 示例 HTML 文档 html = """ <!DOCTYPE html> <html> <body> <div class="text">This is a sample text.</div> <div>Another div without class.</div> <title>Sample Page</title> </body> </html> """ # 解析 HTML 文档 tree = etree.HTML(html) # 使用 XPath 定位元素 title = tree.xpath('/html/head/title') divs = tree.xpath('//div') text_divs = tree.xpath('.//div[@class="text"]') # 输出结果 print("Title:", title[0].text if title else "No title found") print("All divs:", [div.text for div in divs]) print("Divs with class 'text':", [div.text for div in text_divs]) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值