- XPath基础
- 简介
- 语法
- 选取未知节点
- 选取若干路径
XPath基础
简介
什么是XPath,XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。同样的HTML(超文本标记语言)也是标准通用标记语言的子集,也可以通过XPath来对HTML文档进行定位找寻节点。
语法
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
使用例子
<html>
<head>
<meta charset="utf-8" />
<title class='title'>网页标题</title>
</head>
<body>
<h1 id='my_h1'>标题1</h1>
<p class='my_p'>段落1</p>
<p class='my_p'>段落2</p>
<span>25.00</span>
<span>255.00</span>
<div>
<span>25.00</span>
<p>qwer</p>
</div>
<div>
<span>225.00</span>
<p>qwer</p>
</div>
</body>
</html>
路径表达式 | 结果 |
---|---|
html | 选取 html 元素的所有子节点。 |
/html | 选取根元素 html。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! |
html/body | 选取属于 html的子元素的所有 body元素。 |
//body | 选取所有 body子元素,而不管它们在文档中的位置。 |
body//p | 选择属于 html元素的后代的所有 p元素,而不管它们位于 html之下的什么位置。 |
//@class | 选取名为 class的所有属性。 |
路径表达式 | 结果 |
---|---|
//body/p[1] | 选取属于 body子元素的第一个 p 元素。 |
//body/p[last()] | 选取属于 body子元素的最后一个 p元素。 |
//body/p[last()-1] | 选取属于 body子元素的倒数第二个 p元素。 |
//body/p[position()<3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 |
//title[@class] | 选取所有拥有名为 class 的属性的 title 元素。 |
//title[@class=’title’] | 选取所有 title 元素,且这些元素拥有值为 title 的 class属性。 |
/html/body[span>35.00] | 选取 html 元素的所有 body元素,且其中的 span元素的值须大于 35.00。 |
/html/body[span>35.00]/p | 选取 html 元素中的 body元素的所有 p元素,且其中的 span 元素的值须大于 35.00。 |
选取未知节点
通配符 | 描述 |
---|---|
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
路径表达式 | 结果 |
---|---|
/html/* | 选取 html 元素的所有子元素。 |
//* | 选取文档中的所有元素。 |
//p[@*] | 选取所有带有属性的 p元素。 |
选取若干路径
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
路径表达式 | 结果 |
---|---|
//body/p | //body/span | 选取 body元素的所有 p和 span元素。 |
//p | //span | 选取文档中的所有 p和 span元素。 |
/html/body/p | //span | 选取属于 html元素的 body元素的所有 p元素,以及文档中所有的 span元素。 |
可在浏览器控制台中使用 $x()函数对文档进行节点获取。
如:获取html下所有的p标签
$x('/html//p')
更多推荐
xPath解析HTML页面教程
发布评论