如果要定位某个
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()
函数可以计数所选元素的个数
选择含有2
个BBB
子元素的元素
//*[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
>
分享到:
相关推荐
Selenium xpath,
使用XPath定位工具,测试工程师可以更高效地进行网页测试,无需手动编写复杂的定位代码,提高了工作效率。此外,对于网页开发者来说,这样的工具也有助于调试和理解DOM结构。 在实际应用中,XPath结合Selenium ...
Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...
以下是一些基本的XPath定位方法: 1. **基于标签名**:通过元素的标签名定位,如`//button`会找到所有的按钮元素。 2. **基于ID**:使用`[@id='element_id']`来定位具有特定ID的元素,例如`//input[@id='username'...
### 使用XPath精确定位节点元素 #### XPath简介与重要性 XPath是一种用于在XML文档中查找信息的语言。它被设计用来在XML文档中导航,帮助开发者精确地定位和选取节点。XPath在XSLT(Extensible Stylesheet ...
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C组织制定的一种标准查询语言,用于选取XML文档中的节点,包括元素、属性、文本等。在本项目“Xpath生成器,自动生成XPATH,C#版”中,开发者...
XPath是一种在XML文档中查找信息的语言,它可以帮助我们精确地选取HTML或XML文档中的元素。`$x`是Chrome控制台提供的一种命令,用于执行XPath查询并返回匹配的节点数组。例如,`$x("//div[@id='Editor_Edit']/div/...
它使得开发者和数据抓取者能够方便地生成和测试XPath表达式,从而高效地在HTML文档中定位所需信息。XPath(XML Path Language)是一种在XML文档中查找信息的语言,它通过路径表达式来选取节点,如元素、属性、文本等...
XPath Helper是一款非常实用的工具,尤其对于Web开发者和数据抓取者来说,它极大地简化了在网页中查找和提取信息的过程。版本2.0.2是这个插件的一个更新,旨在提供更稳定、高效的功能。XPath(XML Path Language)是...
在处理复杂的XML数据时,XPath提供了强大的查询和定位功能,使得我们可以方便地提取和操作所需信息。 XPath的主要组成部分包括路径表达式、轴、节点测试和谓语。路径表达式是XPath中最基本的概念,用于描述节点间的...
firepath 火狐快速定位xpath的利器
在Java编程环境中,XPath是一种强大的查询语言,用于在XML文档中查找信息。它允许我们根据节点的名称、属性、值或其他特性来定位XML文档中的特定部分。本篇将深入探讨如何在Java中利用XPath来提取XML文档中的数据,...
**XPath定位的重要性** XPath是一种在XML文档中查找信息的语言,同样适用于HTML文档。在自动化测试,特别是使用Selenium进行网页自动化时,XPath是常用的元素定位方法。通过XPath,我们可以精确地找到页面上任何...
XPath是一种在XML文档中查找信息的语言,对于数据提取和解析尤其有效。在这个压缩包中,我们找到了火狐的老版本浏览器和一个专门针对XPath的插件,这对于Python开发者来说,是一个极好的工具集,可以方便地进行网页...
总结来说,XPath是网络爬虫领域中用于HTML和XML文档数据定位的利器,它通过简洁的路径表达式和强大的函数库,使我们能快速、准确地从海量网页数据中提取所需信息。对于任何想要从事网络爬虫开发的人来说,熟练掌握...
XPath Helper是一款专为谷歌浏览器设计的插件,它极大地简化了网页抓取和解析过程,尤其对于使用XPath语法来定位HTML元素的用户来说,这款工具是不可或缺的助手。XPath(XML Path Language)是一种在XML文档中查找...
在Selenium中,XPath定位器用于找到页面上的特定元素,这对于编写测试脚本至关重要。XPath表达式可以根据元素的名称、属性、位置等多种条件进行精确或模糊匹配。 Fire-IEBrowser1.4是一款基于Internet Explorer的...
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,如元素、属性、文本等。XPath的使用极大地简化了数据的检索和处理过程。 在Python的Web爬虫开发中,lxml库是...
XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于Web抓取,特别是Python的Scrapy框架中,用于选取XML或HTML文档中的节点。本文将深入探讨如何使用XPath来获取子标签下的所有文本内容...