Xpath—解决这个问题的良药

何为良药?

因为在XML中存在一些问题和缺陷,针对这些问题就产生了响应的解决方式。如:

getElementById方法在解析XML时因为一些原因适不适合的:

首先XML中每一个元素节点不一定有id属性。

其次XML中的两个元素节点可能有同样的id属性。这样getElementById这种方法就不再能保证找到我们须要的唯一节点了。

针对这个原因Xpath就诞生了。

Xpath是什么?

Xpath是怎样产生的呢?它存在的必要是什么呢?接下来就让我们一一解答自己心中的疑问:

首先Xpath全称是XML Path Language(XML路径语言)。适用于确定XML文档中某节点位置的语言。XPath是
W3C XSLT 标准的主要元素。而且 XQuery 和 XPointer 都构建于 XPath 表达之上。

因此。对 XPath 的理解是非常多高级 XML应用的基础。

我们能够把它当作类似于SQL一样的查询语言。通过给出的Xpath路径信息(就像SQL命令一样)就能够从XML中查找出符合条件的节点(就像从数据库中返回须要的数据一样)

Xpath怎样用?(XPath 路径表达式具体解释 )

一.路径表达式语法

1.路径 = 相对路径 |绝对路径

2.XPath路径表达式 =步进表达式 | 相对路径 "/"步进表达式。

3.步进表达式=轴 节点測试谓词

说明:

1.当中轴表示步进表达式选择的节点和当前上下文节点间的树状关系(层次关系),节点測试指定步进表达式选择的节点名称扩展名。谓词即相当于过滤表达式以进一步过滤细化节点集。

2.谓词能够是0个或多个。

多个多个谓词用逻辑操作符and。or连接。

取逻辑非用not()函数。请看一个典型的XPath查询表达式:/messages/message//child::node()[@id=0],当中/messages/message是路径(绝对路径以"/"開始),child::是轴表示在子节点下选择,node()是节点測试表示选择全部的节点。[@id=0]是谓词,表示选择全部有属性id而且值为0的节点。

二.相对/绝对路径

如果"/"处在XPath表达式开头则表示文档根元素(表达式中间作为分隔符用以切割每个步进表达式)如:/messages/message/subject是一种绝对路径表示法,它表明是从文档根開始查找节点。如果当前节点是在第一个message节点【/messages/message[1]】。则路径表达式subject(路径前没有"/")这样的表示法称为相对路径,表明从当前节点開始查找。

详细请见以下所述的"表达式上下文"。

三.表达式上下文

上下文事实上表示一种环境。

以明白当前XPath路径表达式处在什么样的环境下运行。比如相同一个路径表达式处在对根节点操作的环境和处在对某一个特定子节点操作的环境下运行所获得的结果可能是全然不一样的。

也就是说XPath路径表达式计算结果取决于它所处的上下文。

XPath上下文基本有下面几种:

1.当前节点(./):

如./sender表示选择当前节点下的sender节点集合(等同于以下所讲的"特定元素",如:sender)

2.父节点(../):

如../sender表示选择当前节点的父节点下的sender节点集合

3.根元素(/):

如/messages表示选择从文档根节点下的messages节点集合.

4.根节点(/*):

这里的*是代表全部节点,可是根元素仅仅有一个。所以这里表示根节点。/*的返回结果和/messages返回的结果一样都是messages节点。

5.递归下降(//):

如当前上下文是messages节点。则//sender将返回下面结果:

/messages//sender:

[email protected]

[email protected]

[email protected]

/messages/message[1]//sender:

[email protected]

[email protected]

我们能够看出XPath表达式返回的结果是:从当前节点開始递归步进搜索当前节点下的全部子节点找到满足条件的节点集。

6.特定元素

如sender:表示选择当前节点下的sender节点集合,等同于(./sender)

注意:在运行XPath时一定要注意上下文。

即当前是在哪个节点下运行XPath表达式。这在XMLDOM中非常重要。

如:在XMLDOM中的selectNodes,selectSingleNode方法的參数都是一个XPath表达式,此时这个XPath表达式的运行上下文就是调用这种方法的节点及它所在的环境。

长处:

在IE6.0及其以上版本号中我们能够使用相同的方式来訪问随意深度的XML数据,这给XML数据的解析操作带来了便利。

缺点:

在Firefox等浏览器中。则是使用了w3c标准的Xpath处理方式。没有IE这么简单的方式。

时间: 2024-08-06 18:07:05

Xpath—解决这个问题的良药的相关文章

Xpath—解决时问题的良药

何为良药? 由于在XML中存在一些问题和缺陷,针对这些问题就产生了响应的解决方案.如: getElementById方法在解析XML时由于一些原因适不适合的: 首先XML中每个元素节点不一定有id属性. 其次XML中的两个元素节点可能有相同的id属性,这样getElementById这个方法就不再能保证找到我们需要的唯一节点了.针对这个原因Xpath就诞生了. Xpath是什么? Xpath是如何产生的呢?它存在的必要是什么呢?接下来就让我们一一解答自己心中的疑问: 首先Xpath全称是XML

selenium2+python自动化2-元素定位

嘻嘻,书接上回,接着唠,这里先补充一下自动化要掌握的四个步骤吧:获取元素.操作元素.获取返回值.断言(返回结果与期望结果是否一致),最后就是自动化测试报告的生成.这一片主要讲一下如何进行元素定位.元素定位在这四个环节是至关重要的,如果在一个页面上的元素不能被定位到,那后面的操作就无法继续了.webdriver给我提供了八种基本元素定位方法. 一.环境准备: 1.浏览器选择:Firefox 2.安装插件:Firebug和FirePath(设置>附加组件>搜索:输入插件名>下载安装后重启浏览

selenium+python自动化之元素定位

自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. 万物皆对象,所谓的对象,就是你喜欢的那个女神,她就是你的对象.既然是对象,她就有属性,比如眼睛大,头发长,皮肤白,颜值高.这些都是她的属性,每个属性又有对应的属性值,如眼睛="大",头发="长",颜值="高",对应的=后面就是它的属性的值. 同样的道

Selenium2+python自动化6-八种元素元素定位(Firebug和firepath)

前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位. 元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操作元素10%,获取返回结果10%:断言10%.如果一个页面上的元素不能被定位到,那后面的操作就无法继续了.接下来就来讲webdriver提供的八种基本元素定位方法. 一.环境准备: 1.浏览器选择:Firefox 2.安装插件:Firebug和

央行930新政启动房贷证券化 将撬动10万亿进楼市

央行930新政启动房贷证券化 将撬动10万亿进楼市 宏观经济经济观察报[微博]2014-10-11 00:08 我要分享 3 地产新金融时代:十万亿MBS想象 陈哲 万晓晓 今天,如果您是一位房屋按揭贷业务的优质客户,可能享受的是银行申请名单上更靠前的位置.未来,您或许可从银行拿到更低的利率,但房屋被抵押给了一家券商,而直接借钱给你的,可能是公积金中心,或者,一位买养老险的大妈. 这是一个MBS(Mort-gage-BackedSecurity住房抵押贷款支持证券)的理想模型.起源华尔街的这个金

【PHP对XML文件的操作技术【完整版】】

无论是c/c++还是java.c#均有对XML文件操作的技术,PHP对XML文件的操作的技术主要有三种: DOM.XPath.SimpleXml. 一.DOM DOM:Document Object Model ,中文名字为“文档对象模型” 核心思想:把一个xml文件看作是一个对象模型,然后通过对象的方式来操作xml文件 注意: 当将xml文件看成对象的时候,一般将标签称作节点解析xml文件的时候,相当于建立一棵树,树的节点可以表示标签.内容.属性等 DOM解析XML文件的流程: 1 PHP d

javaSE学习笔记DOM4J解析(7)

DOM4J即Document Object Model for Java使用java技术以文档方式解析XML数据的模型. DOM4J是开源组织提供的一个免费的.强大的XML解析工具,如果开发者需要在项目中使用那么需要下载并引入jar包. dom4j is an Open Source XML framework for Java. dom4j allows you to read, write, navigate, create and modify XML documents. dom4j i

看电影“刺客聂隐娘”前必须了解的知识(绝无剧透)

"聂隐娘",三十三剑客之一,裴铏所撰<传奇>中人物.作为一位女性刺客,被男人们赋予了***,于是出现在各大作品中,当前正在热播的电影<刺客聂隐娘>就是其中之一.在大家惊叹于舒淇美丽的同时,朱老师我就来还原一个最原版的聂隐娘. 注:电影与原版情节相差太多,绝无剧透风险.<三十三剑客图>第九图,图赞云:"精精空空,宜淬镜终" 1.她的传奇,从拐卖儿童开始  本来聂隐娘只是个很普通的女子.父亲是唐朝元帅魏博的手下大将聂锋,用今天的话来说

自动化测试-3.selenium8种常用元素定

自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位. 元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操作元素10%,获取返回结果10%:断言10%.如果一个页面上的元素不能被定位到,那后面的操作就无法继续了.接下来就来讲webdriver提供的八种基本元素定位方法. 一.环境准备: 1.浏览器选择:Firefox 2.安装插件:Firebug和Fir