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

XPath 示例

    博客分类:
  • Xml
阅读更多

原帖地址
http://msdn.microsoft.com/zh-cn/library/ms256086.aspx

 
本主题回顾整个 XPath 参考中出现的语法示例。 所有示例均基于 XPath 语法的示例 XML 文件 (inventory.xml) 。 有关在测试文件中使用 XPath 表达式的示例,请参见本主题最后的“联合 ( | ) 示例”。
 
表达式 引用
./author 当前上下文中的所有 <author> 元素。注意,此表达式等效于下一行中的表达式。
author 当前上下文中的所有 <author> 元素。
first.name 当前上下文中的所有 <first.name> 元素。
/bookstore 此文档的文档元素 (<bookstore>)。
//author 文档中的所有 <author> 元素。
book[/bookstore/@specialty=@style] style 属性值等于文档根处 <bookstore> 元素的 specialty 属性值的所有 <book> 元素。
author/first-name 作为 <author> 元素子级的所有 <first-name> 元素。
bookstore//title <bookstore> 元素中一级或多级深度的所有 <title> 元素(任意后代)。注意,此表达式不同于下一行中的表达式。
bookstore/*/title 作为 <bookstore> 元素的孙代的所有 <title> 元素。
bookstore//book/excerpt//emph 位于 <book> 元素的 <excerpt> 子级内任意位置和位于 <bookstore> 元素内任意位置的所有 <emph> 元素。
.//title 当前上下文中一级或多级深度的所有 <title> 元素。注意,本质上只有这种情况需要句点表示法。
author/* 作为 <author> 元素子级的所有元素。
book/*/last-name 作为 <book> 元素孙级的 <last-name> 所有元素。
*/* 当前上下文的所有孙级元素。
*[@specialty] 具有 specialty 属性的所有元素。
@style 当前上下文的 style 属性。
price/@exchange 当前上下文中 <price> 元素上的 exchange 属性。
price/@exchange/total 返回空节点集,因为属性不包含元素子级。 XML 路径语言 (XPath) 语法允许使用此表达式,但是严格意义上讲无效。
book[@style] 当前上下文的具有 style 属性的 <book> 所有元素。
book/@style 当前上下文的所有 <book> 元素的 style 属性。
@* 当前元素上下文的所有属性。
./first-name 当前上下文节点中的所有 <first-name> 元素。 请注意,这等效于下一行中的表达式。
first-name 当前上下文节点中的所有 <first-name> 元素。
author[1] 当前上下文节点中的第一个 <author> 元素。
author[first-name][3] 具有 <first-name> 子级的第三个 <author> 元素。
my:book my 命名空间中的 <book> 元素。
my:* my 命名空间中的所有元素。
@my:* my 命名空间中的所有属性(不包括 my 命名空间中的元素的未限定属性)。

注意,索引相对于父级。 考虑以下数据:

 

<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>

 
表达式 引用
x/y[1] 每个 <x> 的第一个 <y> 子级。 此表达式等效于下一行中的表达式。
x/y[position() = 1] 每个 <x> 的第一个 <y> 子级。
(x/y)[1] <x> 元素的整个 <y> 子级集合中的第一个 <y>。
x[1]/y[2] 第一个 <x> 的第二个 <y> 子级。

其他示例引用 XPath 的示例 XML 文件。

 
表达式 引用
book[last()] 前上下文节点的最后一个 <book> 元素。
book/author[last()] 前上下文节点的每个 <book> 元素的最后一个 <author> 子级。
(book/author)[last()] 当前上下文节点的 <book> 元素的整个 <author> 子级集合中的最后一个 <author> 元素。
book[excerpt] 包含至少一个 <excerpt> 元素子级的所有 <book> 元素。
book[excerpt]/title 作为 <book> 元素子级,同时包含至少一个 <excerpt> 元素子级的所有 <title> 元素。
book[excerpt]/author[degree] 包含至少一个 <degree> 元素子级,并作为同样包含至少一个 <excerpt> 元素的 <book> 元素的子级的所有 <author> 元素。
book[author/degree] 包含 <author> 子级,这些子级又包含至少一个 <degree> 子级的所有 <book> 元素
author[degree][award] 包含至少一个 <degree> 元素子级和至少一个 <award> 元素子级的所有 <author> 元素。
author[degree and award] 包含至少一个 <degree> 元素子级和至少一个 <award> 元素子级的所有 <author> 元素。
author[(degree or award) and publication] 包含至少一个 <degree> 或 <award> 和至少一个 <publication> 作为子级的所有 <author> 元素。
author[degree and not(publication)] 包含至少一个 <degree> 元素子级并且不包含 <publication> 元素子级的所有 <author> 元素。
author[not(degree or award) and publication] 包含至少一个 <publication> 元素子级,但不包含 <degree> 或 <award> 元素子级的所有 <author> 元素。
author[last-name = "Bob"] 包含至少一个值为 Bob 的 <last-name> 元素子级的所有 <author> 元素。
author[last-name[1] = "Bob"] 第一个 <last-name> 子元素的值为 Bob 的所有 <author> 元素。 请注意,这等效于下一行中的表达式。
author[last-name [position()=1]= "Bob"] 第一个 <last-name> 子元素的值为 Bob 的所有 <author> 元素。
degree[@from != "Harvard"] from 属性不等于 "Harvard" 的所有 <degree> 元素。
author[. = "Matthew Bob"] 值为 Matthew Bob 的所有 <author> 元素。
author[last-name = "Bob" and ../price &gt; 50] 包含值为 Bob 的 <last-name> 子元素和值大于 50 的 <price> 同级元素的所有 <author> 元素。
book[position() &lt;= 3] 前三本书(1、2、3)。
author[not(last-name = "Bob")] 不包含值为 Bob 的 <last-name> 子元素的所有 <author> 元素。
author[first-name = "Bob"] 至少有一个值为 Bob 的<first-name> 子级的所有 <author> 元素。
author[* = "Bob"] 所有包含任何值为 Bob 的子元素的 author 元素。
author[last-name = "Bob" and first-name = "Joe"] 具有值为 Bob 的 <last-name> 子元素和值为 Joe 的 <first-name> 子元素的所有 <author> 元素。
price[@intl = "Canada"] 上下文节点中 intl 属性等于 "Canada" 的所有 <price> 元素。
degree[position() &lt; 3] 作为上下文节点子级的前两个 <degree> 元素。
p/text()[2] 上下文节点中每个 <p> 元素的第二个文本节点。
ancestor::book[1] 上下文节点最近的 <book> 上级。
ancestor::book[author][1] 上下文节点最近的 <book> 上级,并且此 <book> 元素具有 <author> 元素作为其子级。
ancestor::author[parent::book][1] 当前上下文最近的 <author> 上级,并且此 <author> 元素是 <book> 元素的子级。

 


为了演示 union 运算,我们使用以下 XPath 表达式:
x | y/x
在以下 XML 文件中选择所有值为 green 或 blue 的 <x> 元素:
XML 文件 (data1.xml)
Xml
< ?xml   version='1.0'?>
< ?xml-stylesheet   type="text/xsl" href="union.xsl"?>
< root >
< x > green</ x >
< y >
< x > blue</ x >
< x > blue</ x >
</ y >
< z >
< x > red</ x >
< x > red</ x >
</ z >
< x > green</ x >
</ root >

XSLT 文件 (union.xsl)

Xml
< ?xml   version='1.0'?>
< xsl:stylesheet   version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform " >

< xsl:template   match="root">
< xsl:for-each   select="x | y/x">
< xsl:value-of   select="."/> ,
< xsl:if   test="not(position()=last())"> ,</ xsl:if >
</ xsl:for-each >
</ xsl:template >

</ xsl:stylesheet >


格式化输出
green,blue,blue,green

处理器输出

<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green

分享到:
评论

相关推荐

    scrapy中xpath示例用法

    在这个"scrapy-xpath-示例用法.py"文件中,我们可以期待看到一系列关于如何在Scrapy项目中使用XPath的实例。 1. **XPath基本语法** - `/`:根节点选择器,表示从文档根部开始。 - `//`:任意深度选择器,用于选取...

    XPath简单示例

    在本示例中,我们将深入探讨XPath的基本概念以及如何在Java中使用XPath进行XML处理。 首先,XPath的基本概念包括路径表达式、轴、节点测试和节点选择器。路径表达式是XPath的核心,它由一个或多个步进组成,每一步...

    01-xpath示例.py

    from lxml import etree html = """&lt;div class="wrapper"&gt; &lt;i class="iconfont icon-back" id="back"&gt;&lt;/i&gt; 新浪社会 &lt;li&gt;&lt;a href="http://domestic.firefox.sina.com/" title="国内"&gt;国内&lt;/a&gt;&lt;/li&gt; ...

    python神奇xpath

    ##### 复杂XPath示例 为了提取更加复杂的数据结构,我们可以进一步细化XPath路径表达式。例如,提取包含特定文本的元素: ```python data = selector.xpath('//div[@id="test3"]')[0] info = data.xpath('string(....

    XPath.chm参考手册

    以下是一个简单的Java XPath示例: ```java import javax.xml.xpath.*; import org.w3c.dom.*; import org.xml.sax.InputSource; public class XPathExample { public static void main(String[] args) throws ...

    java使用xpath解析xml示例分享

    在示例中,`/bookstore/book[@category='WEB']/title/text()` 表达式查找`bookstore`元素下的所有`book`元素,其中`category`属性等于`WEB`,然后获取这些书的`title`元素的文本内容。同样,`/bookstore/book[@...

    js中使用xpath来解析xml元素.docx

    #### XPath示例 XPath支持多种表达式类型,以下是一些常见的例子: - `/` 表示文档的根节点。 - `//` 表示从当前位置到XML文档的任意位置。 - `.` 表示当前节点。 - `..` 表示父节点。 - `@` 表示属性。 例如,...

    xpath xml 初级 实例

    #### 三、XPath示例解析 ##### 实例1:绝对路径选择 ```xml |/AAA| ``` 此路径选择文档中的根元素`AAA`。 ```xml |/AAA/CCC| ``` 此路径选择根元素`AAA`下的所有`CCC`子元素。 ```xml |/AAA/DDD/BBB| ``` 此路径...

    xpath demo

    5. XPath示例 - 选取所有`&lt;p&gt;`元素:`//p` - 选取所有`class`属性值为`highlight`的`&lt;div&gt;`元素:`//div[@class='highlight']` - 选取`&lt;body&gt;`元素内的所有文本:`//body/text()` - 选取当前节点的所有兄弟元素...

    XPath的22个示例

    本文将通过22个示例深入解析XPath的使用方法。 1. **选取所有节点** XPath表达式`//*` 用于选取文档中的所有元素节点。例如,如果你有一个XML文档,这个表达式会返回所有的元素。 2. **选取特定元素** 使用元素...

    Xpath常用语法示例

    ### Xpath常用语法详解 #### 一、遍历节点 Xpath中的遍历操作非常常见,主要用于处理XML文档中的多个相同节点。...通过以上示例,我们可以看到Xpath的强大功能和灵活性,它能够帮助我们高效地处理和解析XML文档。

    xml查询语言 xpath 参考文档,有比较好的示例

    正如标题所言,“xml查询语言 xpath 参考文档,有比较好的示例”,这表明文档旨在帮助读者理解和应用 XPath 语言进行查询。XPath 的主要目的是定位 XML 文档中的各个节点,类似于使用文件系统中的路径来查找特定的...

    XML增删改查经典示例--.rar

    XPath示例: ```javascript var title = document.evaluate("//book[@id='789']/title", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent; console.log(title); // ...

    JDOM中XPath.selectNodes()和XPath.selectSingleNode()用法

    在Java开发中,XML处理是常见的任务之一,...在提供的`jdomdemo`压缩包文件中,可能包含了一个或者多个示例程序,演示了如何使用JDOM和XPath进行XML处理。你可以解压并运行这些程序,以便更直观地理解它们的工作原理。

    xpathDemo.zip

    在这个"xpathDemo.zip"中,我们可以看到一个使用JDOM和XPath结合的示例。JDOM允许开发者以一种与XML结构相对应的方式在Java程序中创建和操作XML文档。通过JDOM,你可以创建新的XML文档,修改现有文档,或者查询文档...

    xpath的jar包

    以下是一个简单的示例: ```java import org.jaxen.JaxenException; import org.jaxen.dom.DOMXPath; import org.w3c.dom.Document; import org.xml.sax.InputSource; import javax.xml.parsers.DocumentBuilder; ...

    XML的使用方式示列(xsl、xsd、dtd等)

    4. **XPath 示例** 以下XPath表达式选取XML文档中所有`&lt;item&gt;`元素的`&lt;price&gt;`子元素: ```xpath //item/price ``` `//`表示任意层级,`item`是元素名,`/price`则指向下一级的`price`元素。 5. **XSD(XML ...

    XPath依赖Jar包

    以下是一个简单的使用示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.*; import org.w3c.dom.Document; public class XPathExample { public static void main(String...

    关于XML的补考试卷

    图片文件可能是用来辅助理解某些概念或示例,如XML结构图、XPath示例等。 通过这次补考,同学们将进一步掌握XML的核心概念,提升对XML文档的读写、解析和验证能力,为后续的学习和工作打下坚实基础。

    c# base xml.rar

    // XPath示例 using System.Xml.XPath; XPathDocument xpathDoc = new XPathDocument("example.xml"); XPathNavigator navigator = xpathDoc.CreateNavigator(); XPathNodeIterator iterator = navigator.Select("/...

Global site tag (gtag.js) - Google Analytics