`

XPath 简单语法

    博客分类:
  • XML
阅读更多

XPath 是XML的查询语言,和SQL的角色很类似。以下面XML为例,介绍XPath 的语法。

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd country="USA">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd country="UK">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>9.90</price>
  </cd>
  <cd country="USA">
    <title>Greatest Hits</title> 
    <artist>Dolly Parton</artist> 
    <price>9.90</price> 
  </cd>
</catalog>

  
        
定位节点
XML是树状结构,类似档案系统内数据夹的结构,XPath也类似档案系统的路径命名方式。不过XPath 是一种模式(Pattern),可以选出 XML档案中,路径符合某个模式的所有节点出来。例如要选catalog底下的cd中所有price元素可以用:

 

 
/catalog/cd/price    
 
如果XPath的开头是一个斜线(/)代表这是绝对路径。如果开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来,即使是处于树中不同的层级也会被选出来。以下的语法会选出文件中所有叫做cd的元素(在树中的任何层级都会被选出来):

 
//cd
 
选择未知的元素
使用星号(Wildcards,*)可以选择未知的元素。下面这个语法会选出/catalog/cd 的所有子元素:

 
/catalog/cd/*
 
以下的语法会选出所有catalog的子元素中,包含有price作为子元素的元素。

 
/catalog/*/price
 
以下的语法会选出有两层父节点,叫做price的所有元素。

 
/*/*/price
 
以下的语法会选择出文件中的所有元素。

 
//*
 
要注意的是,想要存取不分层级的元素,XPath语法必须以两个斜线开头(//),想要存取未知元素才用星号(*),星号只能代表未知名称的元素,不能代表未知层级的元素。

选择分支
使用中括号可以选择分支。以下的语法从catalog的子元素中取出第一个叫做cd的元素。XPath的定义中没有第0元素这种东西。

 
/catalog/cd[1]
 
以下语法选择catalog中的最后一个cd元素:(XPathj并没有定义 first() 这种函式喔,用上例的 [1]就可以取出第一个元素。

 
/catalog/cd[last()]
 
以下语法选出含有price子元素的所有/catalog/cd元素。

 
/catalog/cd[price]
 
以下语法选出price元素的值等于10.90的所有/catalog/cd元素

 
/catalog/cd[price=10.90]
 
以下语法选出price元素的值等于10.90的所有/catalog/cd元素 的price元素

 
/catalog/cd[price=10.90]/price
 
选择一个以上的路径
使用Or操作数(|)就可以选择一个以上的路径。例如:

 
/catalog/cd/title | catalog/cd/artist
 
选择所有title以及artist元素

 
//title | //artist
 
选择所有title以及artist以及price元素

 
//title | //artist | //price
 
选择属性
在XPath中,除了选择元素以外,也可以选择属性。属性都是以@开头。例如选择文件中所有叫做country的属性:

 
//@country
        
选择所有含有country这个属性的cd元素:

 
//cd[@country]
        
以下语法选择出含有属性的所有cd元素

 
//cd[@*]
        
以下语法选择出country属性值为UK的cd元素

 
//cd[@country='UK']

更详细的说明参考:http://www.w3school.com.cn/xpath/index.asp

分享到:
评论

相关推荐

    XPath 简单语法

    XPath 简单语法XPath 简单语法XPath 简单语法XPath 简单语法XPath 简单语法XPath 简单语法

    xpath实例语法教程及IBM使用的xpath路径观察器

    不可多得的xpath实例语法教程,里面有详细的实例,是学习xpath的好助手。...以往大家只能下载一些xpath的简单教程,现在还给大家提供详尽的实例教程和xpath观察器及验证器,真的不错。希望大家不要错过哟。

    XPath语法详解xml开发必备

    对XPath语法进行了详细的讲解。XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。开发人员必备

    资料xpath语法

    xpath语言的一些简单的语法,对于初学dom4j的人可以了解。

    XPath xml课程实验

    这是xml课程实验,查找所有最外层的section元素(假设仅知道section元素能够无限嵌套,但并不确定最外层的section出现在文档的什么层次上,也就是说:不要简单地使用/book/section)

    XML解析包xPath

    xPath.jar,XML解析包。XPath是获取xml中数据的一种方式,其简单语法易用。

    asp.net知识库

    XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与...

    C#中使用XPath的方法(最精减)

    Xpath是功能很强大的,但是也是相对比较复杂的一门技术,最好还是到博客园上面去专门找一些专业的帖子来看一看,下面是一些简单的Xpath语法和一个实例,提供给你参考一下. 对于用C#来开发XML的兄弟特别有帮助

    trackupdates:一个简单的基于 yaml 的 xpath 爬虫框架,用于轻松跟踪站点更新。 https

    一个简单的基于 yaml 的 xpath 爬虫框架,用于轻松跟踪站点更新。 访问 入门 git clone git@github.com:ZhuPeng/trackupdates.git cd trackupdates pip install -r requirements.txt # update the smtp mail ...

    Python3爬虫学习-爬取图片批量下载 XPATH

    总的来说爬虫不难,会python的简单语法,会xpath提取网页需要的信息,就可以很快的爬取网站的图片,同时也希望以此来激起大家学习的兴趣。 文章导航一、环境二、源码三、部分源码分析3.1 获取网站html网页数据源码...

    使用C#实现爬虫

    使用C#,xpath语法的简单爬虫 ,具有导出,下载execl功能

    在Ruby中处理XML和XSLT以及XPath的简单教程

    什么是 XML ? XML 指可扩展标记语言(eXtensible ... SAX解析器是基于事件处理的,需要从头到尾把XML文档扫描一遍,在扫描的过程中,每次遇到一个语法结构时,就会调用这个特定语法结构的事件处理程序,向应用程序发送

    XML文档查询和转换

    了解XPath的基本语法 能够使用XPath选择节点 能够使用XQuery FLWOR表达式查询XML文档 能够使用XSLT转换简单的XML文档

    dom4j,jaxen.rar

    解析复杂的xml,引入jaxen包,dom解析支持xpath,是复杂的xml解析更简单,可以通过xpath语法直接找到对应的节点,数据

    yamlpal:简单的工具,用于修改和搜索Yaml文件,同时保持原始文件格式

    Yamlpal使用自己的版本的“ yamlpath”(类似于xpath的语法)来标识yaml文件中的元素。 基本用法: # Installation pip install yamlpal # Inserting new content into files (output is printed to stdout by ...

    爬虫 —–beautifulsoup、Xpath、re (三)

    正则表达式 re1.1 正则表达式语法1.3 正则表达式re库的使用1.4 re库的主要功能函数:1.6 re库的另一种等价用法(编译)1.7 re 库的贪婪匹配和最小匹配2. 实例-淘宝商品比价定向爬虫 1.正则表达式 re 典型的搜索和...

    python3 xpath和requests应用详解

    etree使用xpath语法。 import requests import ssl from lxml import etree ssl._create_default_https_context = ssl._create_unverified_context session = requests.Session() for id in range(0, 251, 25): ...

    Objective-C词法分析工具Parsekit.zip

    Parsekit是一个Mac OS X的框架,基于Objective-C提供类似ANTLR的功能.可以对Objective-C的语法进行词法分析. 以下软件已经使用Parsekit开发: ... Exedore: cocoa实现的XPATH 1.0 标签:Parsekit

    astq:抽象语法树 (AST) 查询引擎

    ASTq 是一个用于 JavaScript 的抽象语法树 (AST) 查询引擎库,也就是说,它允许您在强大的 XPath 启发式查询语言的帮助下查询任意 AST 样式分层数据结构的节点。 ASTq 可以在可插拔访问适配器的帮助下对任意 AST ...

    Json.NET:.NET 流行的高性能 JSON 框架-开源

    使用类似 XPath 的语法查询 JSON。 比 DataContractJsonSerializer 快 50%,比 JavaScriptSerializer 快 250%。 Json.NET 让简单变得简单,也让复杂变得可能。 如果需要,Json.NET 支持在 XML 和 JSON 之间进行转换...

Global site tag (gtag.js) - Google Analytics