XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。
利用好XPath,能够极高地提升在Html层叠样式中获取数据的效率。俗话说得好,工欲上其事,必先利其器,XPath就是这么一个好工具。
XPath 使用路径表达式在 XML 文档中选取节点,节点是通过沿着路径或者 step 来选取的。
常用路径表达式
以下代码使用php中的xpath()
演示:
<?php
$html = <<<HTML
<*div id="aaa">
<*span class="bbb">Fun<*/span>
<*h2>Young<*/h2>
<*p rel="ccc">Club<*/p>
<*/div>
HTML;
//输出Fun
$result = $html -> xpath('//div[@id="aaa"]/span[@class="bbb"]');
echo $result[0][0];
//输出Young
$result = $html -> xpath('//div[@id="aaa"]/h2');
echo $result[0][0];
//输出Club
$result = $html -> xpath('//div[@id="aaa"]/p[@rel="ccc"]');
echo $result[0][0];
常用定位函数
1、contains ()
: //div[contains(@id, 'sun')]
表示选择id中包含有"sun"的div节点;
2、text()
:由于一个节点的文本值不属于属性,比如<*a class="demo" href="http://www.yellowsun.cn">YellowSun<*/a>
,用text()
函数来匹配节点://a[text()='YellowSun']
;
3、last()
://div[contains(@id, 'sun')][las()]
表示选择id中包含有"sun"的div节点的最后一个节点;
4、starts-with()
://div[starts-with(@id, 'sun')]
表示选择以"sun"开头的id属性的div节点;
5、not()
:表示否定,//input[@name='yellowsun'and not(contains(@class,'a'))]
表示匹配出name为"yellowsun"并且class的值中不包含a的input节点。 not()
函数通常与返回值为布尔值的函数组合起来用,比如contains()
、starts-with()
等。一种特别情况请注意,当我们要匹配出span节点含有id属性的,写法如下://span[@id]
,但如果我们要匹配出span节点不含用id属性的,则为://span[not(@id)]
。
Comments | 3 条评论
YellowSun
节点标签带*号只是为了防止小程序当作html解析了,实际应用需要删掉
test
php123
这样的格式怎样选取php123
YellowSun
把代码中的*号去掉