XPath常用定位节点元素语句总结

将一个XML或HTML文档转换成了DOM树结构后,如何才能定位到特定的节点?XPath实现了这样的功能,它通过DOM树中节点的路径和属性来导航,通过XPath路径表达式可以选择DOM树中的nodes(节点)或是node-set(节点集)。

XPath包含了数量超过100的内置函数。这些函数针对字符串值,数字值,日期和时间比较,节操作,顺序操作,布尔值,等

常用函数

xpath的常用函数主要包含节点集函数,字符串函数,布尔函数,数字函数,网上的资料较多,在此就不再累述,可参考以下资料:

[a] XPath, XQuery, and XSLT Functions http://www.w3schools.com/xpath/xpath_functions.asp

[b] XPath Functions http://www.caucho.com/resin-3.0/xml/xpath-fun.xtp

[c] XPath Functions(MSDN) http://msdn2.microsoft.com/en-us/library/ms256138.aspx

常用定位语句实例

  1. //NODE[not(@class)] 所有节点名为node,且不包含class属性的节点

  2. //NODE[@class and @id] 所有节点名为node,且同时包含class属性和id属性的节点

  3. //NODE[contains(text(),substring] 所有节点名为node,且其文本中包含substring的节点

//A[contains(text(),"下一页")] 所有包含“下一页”字符串的超链接节点

//A[contains(@title,"文章标题")] 所有其title属性中包含“文章标题”字符串的超链接节点

  1. //NODE[@id="myid"]/text() 节点名为node,且属性id为myid的节点的所有直接text子节点

  2. BOOK[author/degree] 所有包含author节点同时该author节点至少含有一个的degree孩子节点的book节点

  3. AUTHOR[.="Matthew Bob"] 所有值为“Matthew Bob”的author节点

  4. //*[count(BBB)=2] 所有包含两个BBB孩子节点的节点

  5. //*[count(*)=2] 所有包含两个孩子节点的节点

  6. //*[name()='BBB'] 所有名字为BBB的节点,等同于//BBB

  7. //*[starts-with(name(),'B')] 所有名字开头为字母B的节点

  8. //*[contains(name(),'C')] 所有名字中包含字母C的节点

  9. //*[string-length(name()) = 3] 名字长度为3个字母的节点

  10. //CCC | //BBB 所有CCC节点或BBB节点

  11. /child::AAA 等价于/AAA

  12. //CCC/descendant::* 所有以CCC为其祖先的节点

  13. //DDD/parent::* DDD节点的所有父节点

  14. //BBB[position() mod 2 = 0] 偶数位置的BBB节点

  15. AUTHOR[not(last-name = "Bob")] 所有不包含元素last-name的值为Bob的节点

  16. P/text()[2] 当前上下文节点中的P节点的第二个文本节点

  17. ancestor::BOOK[1] 离当前上下文节点最近的book祖先节点

  18. //A[text()="next"] 锚文本内容等于next的A节点

最后推荐一款在Firefox中用的XPath插件:

XPath Checker

https://addons.mozilla.org/en-US/firefox/addon/1095

这个插件可以方便查看网页中任意元素的XPath路径,但其自动生成的XPath路径通常不是最简路径。

参考资料:

[1]XPath Examples. http://msdn2.microsoft.com/en-us/library/ms256086.aspx

[2]XPath Tutorial http://www.zvon.org/xxl/XPathTutorial/Output/example1.html

[3]XPath介绍 http://www.xml.org.cn/dispbbs.asp?boardID=14&ID=35493

[4]XPath reference http://msdn2.microsoft.com/en-us/library/ms256115.aspx

[5]XML Path Language (XPath)Version 1.0 http://www.w3.org/TR/xpath

[6]XPath Tutorial http://www.w3schools.com/xpath/default.asp

转载自:https://www.cnblogs.com/huqingyu/archive/2010/02/21/1670073.html

Xpath常用总结的更多相关文章

  1. XPath常用定位节点元素语句总结

    将一个XML或HTML文档转换成了DOM树结构后,如何才能定位到特定的节点?XPath实现了这样的功能,它通过DOM树中节点的路径和属性来导航,通过XPath路径表达式可以选择DOM树中的nodes( ...

  2. xpath如何使用正则、xpath定位svg标签、xpath常用集合

    自己用到的xpath都收集下咯!!! 持续更新本页面 xpath查找svg图标 xpath('//*[local-name() = "svg" and @class="_ ...

  3. XPath 常用语法札记

    * 不包含属性的元素 例如不包含属性的span: span[not(@*)] * 文本包含某部分的元素 例如文本包含Rank的元素: *[contains(text(),'Rank')] * 选择匹配 ...

  4. 5.5.8 XPath定位

    1.什么是XPath XPath定位方式是自动化测试定位技术中的必杀技,几乎可以解决所有的定位难题.它是XML Path语言的缩写,主要用于在XML 文档中选择文档中的节点.基于XML树状文档结构,X ...

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

    第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...

  6. 在Selenium Webdriver中使用XPath Contains、Sibling函数定位

    前言 在一般情况下,我们通过简单的xpath即可定位到目标元素,但对于一些既没id又没name,而且其他属性都是动态的情况就很难通过简单的方式进行定位了. 在这种情况下,我们需要使用xpath1.0内 ...

  7. JavaScript(第三十天)【XPath】

    XPath是一种节点查找手段,对比之前使用标准DOM去查找XML中的节点方式,大大降低了查找难度,方便开发者使用.但是,DOM3级以前的标准并没有就XPath做出规范:直到DOM3在首次推荐到标准规范 ...

  8. selenium之元素定位-xpath

    被测试网页的HTML代码 <html> <body> <div id="div1" style="text-align:center&quo ...

  9. 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜

    之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...

随机推荐

  1. PCA 原理

      PCA的数学原理(转) 1 年前 PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取 ...

  2. [operator]ELK6的安装

    找了很久才找到一个博客写得比较全面的,FrankDeng 系统环境:CentOS7 相关软件:node-v10.9.0.tar.gz.kibana-6.4.0-linux-x86_64.tar.gz. ...

  3. 编写高质量代码改善C#程序的157个建议——建议69:应使用finally避免资源泄漏

    建议69:应使用finally避免资源泄漏 除非发生让应用程序中断的异常,否则finally总是会先于return执行.finally的这个语言特性决定了资源释放的最佳位置就是在finally块中:另 ...

  4. unittest测试框架详谈及实操(三)

    断言 unittest的TestCase类提供了很多实用的方法来校验预期结果和程序返回的实际结果是否一致.当然这些方法要求必须满足某些条件才能继续执行接下的测试.大致有3种这样的方法.各覆盖一个特定类 ...

  5. Android 文字垂直居中

    android中自定义控件,自己绘制文字canvas.drawText()的时候,怎样才能让文字垂直居中那? drawText()的方法说明 也就是使用paint画笔在(X,Y)处进行绘制,X为横向坐 ...

  6. CodeForces 588E A Simple Task(线段树)

    This task is very simple. Given a string S of length n and q queries each query is on the format i j ...

  7. SQL存储过程编写,包含临时表

    create proc R_ProductUse_M(@id1 int,@id2 int,@id3 int) as begin ---临时表1 select a.id1,b.id2,c.id3 int ...

  8. mongodb高版本与低版本的区别

    mongodb高版本与低版本的区别 一.mongodb引擎: Mongodb 3.0支持用户自定义存储引擎,用户可配置使用mmapv1或者wiredTiger存储引擎. 3.2版本以后默认的开启的是w ...

  9. system idle process

    偶然发现windows环境任务管理其中存在进程 system idle process,cpu占用极大但内存占用很小.google了一下,保存下结果 system idle process :系统空闲 ...

  10. 【题解】 UVa11729 Commando War

    题目大意 你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bj分钟交代任务,然后他就会立刻独立地.无间断地执行Ji分钟后完成任务.你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一 ...