xpath 总结1
根据W3说明 “XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。”
主流浏览器除了IE之外全部支持解析xpath的方法 document.evaluate
下面记录一些xpath中常用的表达式
1.HTML页面结构如下
<body> <div id="main"> <header> <h1>this is an page about xpath using skills</h1> </header> <div> <table> <tr> <td>name</td><td>link</td> </tr> <tr> <td>mike</td> <td> <a href="http://www.360.com">360</a> <a href="http://www.baidu.com">baidu</a> </td> </tr> <tr> <td>jack</td><td><a href="http://www.google.com">google</a></td> </tr> <tr> <td>luke</td><td><a href="http://www.Twitter.com">Twitter</a></td> </tr> </table> <a>good</a> <a href="http://www.linkwithblank.com"> link </a> <a href="http://www.lastlink.com"> lastlink </a> </div> </div> </body>
一些常用的 xpath方法
{
//获取所有A标签 这里返回按照文档顺序查找到的第一个节点
var linka = document.evaluate("//a", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
console.info(linka.singleNodeValue);
}
{
//获取所有A标签 这里返回所有按照文档顺序查找的所有节点
var links = document.evaluate("//a", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i = 0; i < links.snapshotLength; i++) {
console.info(links.snapshotItem(i).text);
}
}
//常用的匹配的第一个节点的方法
function getSingleNodeByXpath(xpath){
var ret = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
return ret.singleNodeValue;
}
{
//获取文本值为google的xpath方法
var node = getSingleNodeByXpath("//a[text()='google']");
console.info(node.outerHTML)
}
{
//获取文本值为google的xpath方法
var node = getSingleNodeByXpath("//a[normalize-space(text())='link']");
console.info(node.outerHTML)
}
{
//过滤空白的字符串
var node = getSingleNodeByXpath("//a[normalize-space(text())='link']/../..");
console.info(node.tagName+"#"+node.id)
}
{
//包含某个字符串
var node = getSingleNodeByXpath("//a[contains(text(),'itter')]");
console.info(node.outerHTML)
}
{
//索引取值,查询依据是根据同一个父节点下的相同子节点来获取的 首先找到的 是 360 baidu两个节点, 然后返回最后一个
var node = getSingleNodeByXpath("//div[@id='main']//a[last()]");
//返回的是<a href="http://www.baidu.com">baidu</a>
console.info(node.outerHTML)
//如果要返回div#main下面的 最后一个lastlink 需要修改为
var node1 = getSingleNodeByXpath("(//div[@id='main']//a)[last()]");
//返回的是<a href="http://www.lastlink.com"> lastlink </a>
console.info(node.outerHTML)
}
[注]
XPathResult 对象 http://www.w3school.com.cn/xmldom/dom_xpathresult.asp
xpath语法 http://www.w3school.com.cn/xpath/index.asp

浙公网安备 33010602011771号