zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    cenos7 安装samba
    Cenos7 学习笔记
    mysql学习笔记(一)
    Qt 程序打包发布总结 转
    主机名由localhost变成bogon是怎么回事,怎样变回localhost这个名字?
    Heap Size 与 Stack Size
    数据字节对齐案例
    C语言进阶日志二
    位带操作
    Stm32高级定时器(转自:luowei_memory)
  • 原文地址:https://www.cnblogs.com/justlikethat/p/3424845.html
Copyright © 2011-2022 走看看