XPath初探
本文最后更新于 2023年4月8日 下午
什么是XPath
XPath即XML路径语言(XML Path Language),XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介XPointer(英语:XPointer)与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。
XPath节点
XPath常用语法
表达式 | 描述 |
---|---|
nodename | Selects all nodes with the name “nodename” |
/ | Selects from the root node |
// | 自身引用及子孙节点(跳级) |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |
表达式 | 描述 |
---|---|
text() | 寻找某点的文字型别,例如hello 于<k>hello</k> |
comment() | 寻找XML注释节点,例如<!-- 注释 --> |
processing-instruction() | 寻找XML处理指令如<?php echo $a; ?> 。在这个例子里,将符合processing-instruction('php') 会传回值。 |
node() | 寻找所有点 |
使用举例
1 |
|
路径表达式 | 结果 |
---|---|
bookstore | 选取 bookstore 元素的所有子节点。 |
/bookstore | 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! |
bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 |
//book | 选取所有 book 子元素,而不管它们在文档中的位置。 |
bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
//@lang | 选取名为 lang 的所有属性。 |
路径表达式 | 结果 |
---|---|
/bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 |
/bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 |
/bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素。 |
/bookstore/book[position()❤️] | 选取最前面的两个属于 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。 |
在浏览器中使用
开发者工具查找
Chrome插件
XPath Helper是一个很好用的Chrome浏览器扩展,方便直接生成合适的XPath
XPath初探
https://muzing.top/posts/733790c2/