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

XPath路径表达式

1. 绝对路径表达式

语法/根元素/子元素/子子元素...
特点**:**必须从根元素开始,完整地逐层写路径。
示例代码

 
<!-- XML结构 --> <school> <class id="1"> <student>小明</student> <student>小红</student> </class> </school> 

XPath表达式/school/class/student
解析结果:所有 <class> 下的 <student> 节点(小明、小红)。


2. 相对路径表达式

语法./子元素/子子元素...(开头的 ./ 可省略,直接写子元素路径)
特点从当前节点开始,不需要以根为起点。
场景:当你在某个节点内部继续查找时使用。
示例
假设当前节点是 <class>,想找它的子元素:

  • 效果等同的写法student./student
    解析结果:该 <class> 下的所有学生节点。

3. 全文搜索路径表达式(万能路径)

语法//元素
特点跨层级全文搜索,无论元素在哪一层。
示例

 
<library> <book> <title>Java入门</title> </book> <magazine> <title>科技周刊</title> </magazine> </library> 

XPath表达式//title
解析结果:所有 <title> 节点(Java入门、科技周刊),无论它们在什么层级。


4. 条件筛选表达式

(1) 按属性存在性筛选

语法//元素[@属性名]
示例

 
<products> <product id="1001" status="hot">手机</product> <product id="1002">耳机</product> </products> 

XPath表达式//product[@status]
解析结果:筛选出有 status 属性的 <product> 节点(手机)。

(2) 按属性值筛选

语法//元素[@属性名=属性值]
示例//product[@id="1001"]
解析结果:找到 id="1001"<product> 节点(手机)。


对比总结

表达式类型语法示例核心作用
绝对路径/root/child严格逐层查找特定位置
相对路径child./child从当前节点出发,向下查找
全文搜索//element忽略层级,找到所有符合条件的元素
条件筛选//element[@attr]根据属性或属性值过滤结果

实际应用练习

假设有以下 XML:

 
<students> <student id="101"> <name>张三</name> <score>90</score> </student> <student id="102"> <name>李四</name> <score grade="A">85</score> </student> </students> 
  1. 找所有学生名字//name(结果:张三、李四)
  2. 找第二个学生的分数/students/student[2]/score(结果:<score grade="A">85</score>
  3. 找有 grade 属性的分数//score[@grade](结果:李四的分数节点)

如有具体疑问,请告诉我你卡在哪个点?可以用例子帮你分析! 😊

的语法。看完你一定能掌握核心要点!


1. 绝对路径表达式

语法/根元素/子元素/子子元素...
特点**:**必须从根元素开始,完整地逐层写路径。
示例代码

 
<!-- XML结构 --> <school> <class id="1"> <student>小明</student> <student>小红</student> </class> </school> 

XPath表达式/school/class/student
解析结果:所有 <class> 下的 <student> 节点(小明、小红)。


2. 相对路径表达式

语法./子元素/子子元素...(开头的 ./ 可省略,直接写子元素路径)
特点从当前节点开始,不需要以根为起点。
场景:当你在某个节点内部继续查找时使用。
示例
假设当前节点是 <class>,想找它的子元素:

  • 效果等同的写法student./student
    解析结果:该 <class> 下的所有学生节点。

3. 全文搜索路径表达式(万能路径)

语法//元素
特点跨层级全文搜索,无论元素在哪一层。
示例

 
<library> <book> <title>Java入门</title> </book> <magazine> <title>科技周刊</title> </magazine> </library> 

XPath表达式//title
解析结果:所有 <title> 节点(Java入门、科技周刊),无论它们在什么层级。


4. 条件筛选表达式

(1) 按属性存在性筛选

语法//元素[@属性名]
示例

 
<products> <product id="1001" status="hot">手机</product> <product id="1002">耳机</product> </products> 

XPath表达式//product[@status]
解析结果:筛选出有 status 属性的 <product> 节点(手机)。

(2) 按属性值筛选

语法//元素[@属性名=属性值]
示例//product[@id="1001"]
解析结果:找到 id="1001"<product> 节点(手机)。


对比总结

表达式类型语法示例核心作用
绝对路径/root/child严格逐层查找特定位置
相对路径child./child从当前节点出发,向下查找
全文搜索//element忽略层级,找到所有符合条件的元素
条件筛选//element[@attr]根据属性或属性值过滤结果

实际应用练习

假设有以下 XML:

 
<students> <student id="101"> <name>张三</name> <score>90</score> </student> <student id="102"> <name>李四</name> <score grade="A">85</score> </student> </students> 
  1. 找所有学生名字//name(结果:张三、李四)
  2. 找第二个学生的分数/students/student[2]/score(结果:<score grade="A">85</score>
  3. 找有 grade 属性的分数//score[@grade](结果:李四的分数节点)

如有具体疑问,请告诉我你卡在哪个点?可以用例子帮你分析! 😊

相关文章:

  • 文件上传漏洞详细利用流程
  • BambuStudio学习笔记:format格式化输出
  • Linux中是如何进行日志管理的?
  • C语言--简单排序算法(冒泡、选择、插入)
  • 迷你世界脚本出生点接口:Spawnport
  • 论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition
  • java在mavenclean之后点击主启动函数,一直显示java找不到符号的解决办法
  • oracle常用参数解析
  • 数据结构篇—栈(stack)
  • 蓝陵科技:以“数字底座”之力,全面布局影视行业工业化
  • 【赵渝强老师】监控Redis
  • Redis100道高频面试题
  • 初阶数据结构习题【7】(3顺序表和链表)—— 21. 合并两个有序链表
  • 浅谈汽车系统电压优缺点分析
  • 2.Deepseek提示语技巧到多场景应用
  • 《AI大模型技术应知应会100篇》No1. 大模型文件格式一篇读懂读全
  • linux网络(3)—— socket编程(1)socket基础认识
  • 一篇文了解 Go的 init 函数---目的、执行和最佳实践
  • 【大模型学习】第三章 Prompt工程技术要点详解:从原理到应用
  • 如何实现在Windows系统内搭建Linux系统(WSL)
  • 如何网站建设/全国疫情最新情况公布
  • 如何建个人网站教程/最好的推广平台是什么软件
  • 用jsp做网站主界面/整合营销传播方案
  • 一个网站里面只放一个图片怎么做的/河北seo推广
  • 怎样做网站排名/企业网络营销策略案例
  • 个人域名做企业网站/本地推广平台