`
sqe_james
  • 浏览: 264927 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用XPath定位信息

    博客分类:
  • XML
XML 
阅读更多

 

如果要定位某个 XML 文档中的一段特定信息,那么,通过遍历 DOM 树的众多结点来进行查找显得有些麻烦。 XPath 语言使得访问树结点变得很容易。例如,假设有如下 XML 文档 :

<configuration>

<database>

<username>dbuser</username>

<password>secret</password>

</database>

</configuration>

你可以通过对 XPath 表达式 /configuration/database/username 求值来得到 database 中的 username 的值。

 

基本的 XPath 语法类似于在一个文件系统中定位文件 , 如果路径以斜线 / 开始 , 那么该路径就表示到一个元素的绝对路径。 如果路径以双斜线 // 开头 , 则表示选择文档中所有满足双斜线 // 之后规则的元素 ( 无论层级关系 )

 

JDK5.0 增加了一个 API 计算 XPath 表达式。需要先从 XPathFactory 创建一个 XPath 对象:

XPathFactory xpfactory = XPathFactory.newInstance();

path = xpfactory.newXPath();

然后,调用 evaluate 方法来计算 XPath 表达式:

String username = path.evaluate(“/configuration/database/username”,doc);

 

e.g:

如果要产生一组结点:

NodeList nodes = (NodeList)path.evaluate(“/gridbag/row”,doc,XPathConstants.NODESET);

若是一个结点:

Node node = (Node)path.evaluate(“/gridbag/row[1]”,doc,XPathConstants.NODE);

若是一个数字:

Int count = ((Number)path.evaluate(“count(/gridbag/row)”,doc,XPathConstants.NUMBER)).intValue();

 

API   javax.xml.xpath.XPathFactory

返回 XPathFactory 实例来创建 XPath 对象

static XPathFactory newInstance()

 

构建 XPath 对象来计算 XPath 表达式

XPath newXPath()

 

API   javax.xml.xpath.XPathFactory

从给定的起点计算表达式。起点可以是一个结点或结点列表。如果结果是一个结点或结点集,则返回的字符串包含所有文本结点子元素的数据。

String evaluate(String expression, Object startingPoint)

 

从给定的起点计算表达式。起点可以是一个结点或结点列表。 resultType XPathConstants 类的常量 STRING NODE NODESET NUMBER BOOLEAN 之一。返回值是 String Node NodeList Number Boolean

 

 

1. 属性的值可以被用来作为选择的准则 , normalize-space 函数删除了前部和尾部的空格 , 并且把连续的空格串替换为一个单一的空格。

 

选择含有属性id 且其值为'b1'BBB 元素: //BBB[@id='b1']

<AAA>

   <BBB id = "b1"/>

   <BBB name = " bbb "/>

   <BBB name = "bbb"/>

</AAA>

 

选择含有属性 name 且其值 ( 在用 normalize-space 函数去掉前后空格后 ) 'bbb' BBB 元素: //BBB[normalize-space(@name)='bbb']

<AAA>

  <BBB id = "b1"/>

  <BBB name = " bbb "/>

  <BBB name = "bbb"/>

</AAA>

 

2. count() 函数可以计数所选元素的个数

 

选择含有2BBB 子元素的元素 //*[count(BBB)=2]

<AAA>

  <CCC>

     <BBB/>

     <BBB/>

     <BBB/>

  </CCC>

  <DDD>

    <BBB/>

    <BBB/>

  </DDD>

  <EEE>

     <CCC/>

     <DDD/>

  </EEE>

</AAA>

 

选择含有2 个子元素的元素 //*[count(*)=2]

<AAA>

  <CCC>

     <BBB/>

     <BBB/>

     <BBB/>

   </CCC>

   <DDD>

      <BBB/>

      <BBB/>

    </DDD>

    <EEE>

        <CCC/>

        <DDD/>

    </EEE>

</AAA>

 

3. name() 函数返回元素的名称, start-with() 函数在该函数的第一个参数字符串是以第二个参数字符开始的情况返回 true, contains() 函数当其第一个字符串参数包含有第二个字符串参数时返回 true.

选择所有名称为 BBB 的元素 ( 这里等价于 //BBB): //*[name()='BBB']

< AAA >

    < BCC >

       <BBB />

       <BBB />

       <BBB />

    </ BCC >

    < DDB >

       <BBB />

       <BBB />

    </ DDB >

    < BEC >

       < CCC />

       < DBD />

    </ BEC >

</ AAA >

 

选择所有名称以"B" 起始的元素: //*[starts-with(name(),'B')]

< AAA >

    <BCC>

       <BBB />

       <BBB />

       <BBB />

    </BCC>

    < DDB >

       <BBB />

       <BBB />

    </ DDB >

    <BEC>

       < CCC />

       < DBD />

    </BEC>

</ AAA >

 

选择所有名称包含"C" 的元素: //*[contains(name(),'C')]

< AAA >

    <BCC>

       < BBB />

       < BBB />

       < BBB />

    </BCC>

    < DDB >

       < BBB />

       < BBB />

    </ DDB >

    <BEC>

       <CCC />

       < DBD />

    </BEC>

</ AAA >

 

 

 

分享到:
评论

相关推荐

    xpath定位,xpath定位,xpath定位

    Selenium xpath,

    页面元素xpath定位工具.rar

    使用XPath定位工具,测试工程师可以更高效地进行网页测试,无需手动编写复杂的定位代码,提高了工作效率。此外,对于网页开发者来说,这样的工具也有助于调试和理解DOM结构。 在实际应用中,XPath结合Selenium ...

    Selenium WebDriver中使用By.Xpath快速定位页面元素

    Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...

    Selenium_XPath定位详解

    以下是一些基本的XPath定位方法: 1. **基于标签名**:通过元素的标签名定位,如`//button`会找到所有的按钮元素。 2. **基于ID**:使用`[@id='element_id']`来定位具有特定ID的元素,例如`//input[@id='username'...

    用xpath精确定位节点元素

    ### 使用XPath精确定位节点元素 #### XPath简介与重要性 XPath是一种用于在XML文档中查找信息的语言。它被设计用来在XML文档中导航,帮助开发者精确地定位和选取节点。XPath在XSLT(Extensible Stylesheet ...

    Xpath生成器,自动生成XPATH,C#版

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C组织制定的一种标准查询语言,用于选取XML文档中的节点,包括元素、属性、文本等。在本项目“Xpath生成器,自动生成XPATH,C#版”中,开发者...

    Chrome控制台妙用之定位xpath_js_css居家必备好工具

    XPath是一种在XML文档中查找信息的语言,它可以帮助我们精确地选取HTML或XML文档中的元素。`$x`是Chrome控制台提供的一种命令,用于执行XPath查询并返回匹配的节点数组。例如,`$x("//div[@id='Editor_Edit']/div/...

    xpath-helper 插件及使用方法

    它使得开发者和数据抓取者能够方便地生成和测试XPath表达式,从而高效地在HTML文档中定位所需信息。XPath(XML Path Language)是一种在XML文档中查找信息的语言,它通过路径表达式来选取节点,如元素、属性、文本等...

    XPath Helper版本2.0.2

    XPath Helper是一款非常实用的工具,尤其对于Web开发者和数据抓取者来说,它极大地简化了在网页中查找和提取信息的过程。版本2.0.2是这个插件的一个更新,旨在提供更稳定、高效的功能。XPath(XML Path Language)是...

    用XPath精确定位节点元素

    在处理复杂的XML数据时,XPath提供了强大的查询和定位功能,使得我们可以方便地提取和操作所需信息。 XPath的主要组成部分包括路径表达式、轴、节点测试和谓语。路径表达式是XPath中最基本的概念,用于描述节点间的...

    firepath火狐xpath定位

    firepath 火狐快速定位xpath的利器

    Java中使用xpath获取xml中的数据

    在Java编程环境中,XPath是一种强大的查询语言,用于在XML文档中查找信息。它允许我们根据节点的名称、属性、值或其他特性来定位XML文档中的特定部分。本篇将深入探讨如何在Java中利用XPath来提取XML文档中的数据,...

    ChroPath 非常给力的Xpath定位查看插件

    **XPath定位的重要性** XPath是一种在XML文档中查找信息的语言,同样适用于HTML文档。在自动化测试,特别是使用Selenium进行网页自动化时,XPath是常用的元素定位方法。通过XPath,我们可以精确地找到页面上任何...

    火狐老版本+xpath插件(适合python+xpath爬虫使用)

    XPath是一种在XML文档中查找信息的语言,对于数据提取和解析尤其有效。在这个压缩包中,我们找到了火狐的老版本浏览器和一个专门针对XPath的插件,这对于Python开发者来说,是一个极好的工具集,可以方便地进行网页...

    爬虫的Xpath定位神器,非常的简单方便

    总结来说,XPath是网络爬虫领域中用于HTML和XML文档数据定位的利器,它通过简洁的路径表达式和强大的函数库,使我们能快速、准确地从海量网页数据中提取所需信息。对于任何想要从事网络爬虫开发的人来说,熟练掌握...

    谷歌浏览器XPath2.0插件

    XPath Helper是一款专为谷歌浏览器设计的插件,它极大地简化了网页抓取和解析过程,尤其对于使用XPath语法来定位HTML元素的用户来说,这款工具是不可或缺的助手。XPath(XML Path Language)是一种在XML文档中查找...

    RPA Selenium 定位Xpath 工具

    在Selenium中,XPath定位器用于找到页面上的特定元素,这对于编写测试脚本至关重要。XPath表达式可以根据元素的名称、属性、位置等多种条件进行精确或模糊匹配。 Fire-IEBrowser1.4是一款基于Internet Explorer的...

    xpath-helper.zip

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、属性、文本等。XPath的使用极大地简化了数据的检索和处理过程。 在Python的Web爬虫开发中,lxml库是...

    对Xpath 获取子标签下所有文本的方法详解

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于Web抓取,特别是Python的Scrapy框架中,用于选取XML或HTML文档中的节点。本文将深入探讨如何使用XPath来获取子标签下的所有文本内容...

Global site tag (gtag.js) - Google Analytics