用XPath查找HTML节点或元素

虽然JQ和JS都能很方便的查找包含了ID及类名的元素,但某些情况下,我们需要查找一些不包含类名、ID的元素或节点,就需要XPath来帮忙了。

XPath虽然是被设计用来搜寻XML文档的,不过它也能很好的在HTML文档中工作,并且大部分浏览器也支持通过XPath来查询节点。

XPath既然叫Path,就是以路径的形式来指定元素。关于XPath的语法,这里不多赘述,请自行查询相关资料。

XPath的查询函数,在IE中与其他浏览器(Chrome、Firefox、Opear等)是不一样的,所以如果你的网站需要兼容IE,需要注意。

Xpath在IE中的查询函数为 document.selectNodes(xpath),其返回的是一个集合,通过for循环就可以读取所有的元素。

var nodes=document.selectNodes("//a[@href]");
for (i=0;i<nodes.length;i++){
    // 对 nodes[i] 执行操作;
}

// 这里要注意,IE对于元素的默认索引序列是从0开始的,不符号W3C标准
// 添加下面这行代码,让其符合W3C标准
document.setProperty("SelectionLanguage","XPath"); //设置语言选择
nodes=document.selectNodes("//div[1]");

而其他浏览器的查询函数,调用就稍微复杂一点,都是采用 document.evaluate 这个函数,返回的是一个枚举集合,需要使用 while 循环来枚举元素。

var result = document.evaluate("//a[@href]", document, null, XPathResult.ANY_TYPE, null);
var nodes = result.iterateNext(); //枚举第一个元素
while (nodes){
    // 对 nodes 执行操作;
    nodes=result.iterateNext(); //枚举下一个元素
}

// 如果只查找单个元素,可以简写成这样
nodes=document.evaluate("//div[1]", document).iterateNext();

花了一晚学习的,留个标记,防止以后忘了

时间: 2024-10-23 06:18:48

用XPath查找HTML节点或元素的相关文章

C#用xpath查找某节点

C#用xpath查找某节点 从根节点一直下来的相对路径才能确定Xpath的写法. /root/<节点1>/<节点2>//<@属性> Xpath是功能很强大的,但是也是相对比较复杂的一门技术,最好还是到博客园上面去专门找一些专业的帖子来看一看,下面是一些简单的Xpath语法和一个实例,提供给你参考一下 <?xml version="1.0" encoding="ISO-8859-1"?><catalog> 

C#使用xpath查找xml节点信息

Xpath是功能很强大的,但是也是相对比较复杂的一门技术,最好还是到博客园上面去专门找一些专业的帖子来看一看,下面是一些简单的Xpath语法和一个实例,提供给你参考一下. xml示例: <?xml version="1.0" encoding="utf-8" ?> <roles> <role order="1"> <roleId>1</roleId> <roleName>一般

XPATH 查找指定Class 元素

毕竟XPath 可以比较迅速的从格式化的html查找解析相应的元素. 比较正规的网站布局,可以通过 chrome 的调试器 直接复制XPATH 路径.如图: 但是呢这种方法可能实现不了效果,得不到正确搜寻的值集合. 如何通过xpath 来查找一个 指定 class='xxx'的元素的内容呢. DocumentNode.SelectNodes("//div[@class='mainArea']/ul/li"); 大家可以 通过 如此: //div[@class='mainArea']的意

用XPath精确定位节点元素&amp;selenium使用Xpath定位之完整篇

在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select = "" 中,用引号括起来的部分必须能够精确地定位节点.具体的定位方法则在XPath中给出. 之所以要在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路 径:通过文件管理路径,可以按照一定的规则查找到所需要的文件

通过xpath查找指定的节点

采用xpath查找需要引入jaxen-xx-xx.jar,否则会报java.lang.NoClassDefFoundError:org/jaxen/JaxenException异常.   List list=document.selectNodes("/books/book/@show"); xpath语法 1.选取节点 XPath 使用路径表达式在 XML 文档中选取节点,节点是沿着路径或者 step 来选取的. 常见的路径表达式: 表达式  描述  nodename 选取当前节点的

【RF库XML测试】通过xpath查找元素的说明

Tag names:当仅使用1个tag的时候,xpath匹配具有该标签名称的所有直接子元素. Paths:通过/符号连接tag名称,例如second/child将匹配父元素second下所有的child子元素. 请注意,如果有多个父元素都有子元素,则xpath将匹配所有这些子元素. Wildcards(通配符):通配符*匹配所有元素 Current element:当前元素用一个点(.)表示,通常,当前元素是隐式的,不需要包含在xpath中. Parent element:其他元素的父元素用两个

第一百二十六节,JavaScript,XPath操作xml节点

第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准DOM去查找XML中的节点方式,大大降低了查找难度,方便开发者使用.但是,DOM3级以前的标准并没有就XPath做出规范:直到DOM3在首次推荐到标准规范行列.大部分浏览器实现了这个标准,IE则以自己的方式实现了XPath. 一.IE中的XPath 在IE8及之前的浏览器,XPath是采用内置基于A

C#使用xpath找到一个节点

Xpath这是非常强大.但对比是一个更复杂的技术,希望上面去博客园特别想看看一些专业职位.下面是一些简单Xpath的语法和示例,给你参考 <?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd country="USA"> <title>Empire Burlesque</title> <artist>Bob Dyl

兼容IE8以下,获取className节点的元素(document.getElementsByClassName()兼容写法)。

因为ie8一下不兼容 document.getElementsByClassName() 功能:通过class的名字获取符合条件的元素 node.getElementsByClassName() 指定node节点下,符合条件的元素. 所以我们自己封装一个兼容IE8以下,获取className节点的函数. //兼容IE8以下,获取className节点的元素. function elementsByClassName(node, className){ var res = [];//定义一个数组用