常用规则
-
获取文本
表达式 描述 a/text() 获取 a 下的文本 a//text() 获取 a 下所有元素的文本 //a[text()='下一页'] 获取文本为下一页的 a 元素 -
获取属性
表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 * 匹配任何元素节点 @* 匹配任何属性节点 node() 匹配任何类型的节点
示例
路径表达式 | 结果 |
---|---|
/div/li[1] (注意下标从1开始) | 选取属于 div 子元素的第一个li元素 |
/div/li[last()] | 选取属于 div子元素的最后一个 li元素 |
/div/li[last()-1] | 选取属于 div子元素的倒数第二个 li元素 |
/div/li[position()<3] | 选取属于 div子元素的 最前面两个 li元素 |
//title[@lang] | 选取所有拥有名为 lang 的属性的title元素 |
//title[@lang='eng'] | 选取所有 lang 属性为 eng 的 title 元素 |
/div/li[price>35.00] | 选取 div元素下所有 li元素,它们的 price 元素值大于 35.00 |
/div/li[price>35.00]/title | 选取 div元素中的 li元素的所有 title 元素,且 price 元素的值大于35.00 |
/div/* | 选取 div的所有子元素 |
//* | 选取文档中的所有元素 |
//node()/meta[]/@* | 选取 html 下面任意节点的 meta 节点的所有属性 |
//title[@*] | 选取所有带有属性的 title 元素 |
//li/title | // li/price | 选取 li元素的所有 title 和 price 元素 |
//title | //price | 选取文档中的所有 title 和 price 元素 |
//div/li/title | //price | 选取属于 div元素的 li元素的所有 title 元素,以及文档中所有的 price 元素 |