XPath 简单语法

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']

转载于:https://www.cnblogs.com/BlogNetSpace/archive/2012/03/20/1460146.html

XPath 简单语法相关推荐

  1. python爬虫xpath的语法

    有朋友问我正则,,okey,其实我的正则也不好,但是python下xpath是相对较简单的 简单了解一下xpath: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML ...

  2. 嵌入式基础认识2:shell脚本的一些简单语法规则

    一.关于shell的一些认识 1.shell语言,是一类编程语言.常用shell语言有sh.bash.csh.ksh.perl.python等.linux下最常用的脚本就是bash. 2.shell脚 ...

  3. 编译原理简单语法分析器(first,follow,分析表)源码下载

    编译原理(简单语法分析器下载) http://files.cnblogs.com/files/hujunzheng/%E5%8A%A0%E5%85%A5%E5%90%8C%E6%AD%A5%E7%AC ...

  4. CSS选择器与Xpath常用语法及对比

    文章目录 写在前面 CSS选择器基本语法 一些不足 Xpath查询基本语法 二者的主要对比 相同 不同 语法方面 写在前面 写爬虫时候经常遇到HTML元素的定位问题,针对这个问题,主流的两种思路是CS ...

  5. T-Sql(一)简单语法

    Sql Server是鄙人学习的第一种数据库,对Sql Server有一种特别的情感,下面就说一下Sql Server的简单语法,适用初学者. 1,创建数据库create database creat ...

  6. 转载:XPath基本语法

    出处:http://www.cnblogs.com/Miko2012/archive/2012/10/26/2740840.html XPath的语法最基本的节点之间用/,属性用@,还有几个函数记住了 ...

  7. vbs简单语法及简单案例

    文章目录 一.简单语法 1.变量 2.输入 3.输出 4.选择语句 5.循环 二.用记事本编译中文乱码问题 三.制作一个简单vbs脚本表白 一.简单语法 1.变量 语法: dim 变量名 例: dim ...

  8. R语言学习笔记【简单语法总结-上】

    简单语法总结[上]: R语言特征总览: 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许 ...

  9. Golang简单语法

    Golang简单语法 文章目录 Golang简单语法 GO语言 简介 Golang的格式检查 注释 主函数模板 `变量` 输入和输出语句 变量的类型 变量的定义和赋值 常量 流程控制 `函数` 内置函 ...

  10. 自己总结的MD的一些简单语法

    自己总结的MD的一些简单语法 标题的使用 用"#"+空格+你所想拟写的标题即可 若有多个小标题只需在其前面多加几个"#"即为多加几个小标题(最多支持六个小标题) ...

最新文章

  1. [转]调试AngularJS应用
  2. hαbits的意思_hαppy什么么意思
  3. html5用圆圈画猫,html5的应用-画一个可爱的小猫咪效果图
  4. [转]html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
  5. 委派模式的定义及应用场景
  6. tomcat和servlet的关系
  7. 【SQL练习题】case when实现按要求排序
  8. Django项目中使用Redis
  9. python 判断 字串包含_Python变量
  10. java 首字母小写转换_java实现将字符串中首字母转换成大写,其它全部转换成小写的方法示例...
  11. Ubuntu下codeblocks汉化
  12. mac flutter开发环境 flutter环境变量的配置
  13. delete 的用法(Hive)(SQL)
  14. 后向重计算在OneFlow中的实现:以时间换空间,大幅降低显存占用
  15. Python分析抖音数据,让视频爆起来!
  16. 纯CSS实现圆角阴影的折角效果
  17. html 转图片 wekit实现,HTML5和Webkit实现树叶飘落动画
  18. win10系统打不开计算机管理,win10电脑任务栏图标一直闪烁,任务管理器打不开...
  19. Unity初级工程师面试指导
  20. OutOfMemoryError的原因有哪些?怎么解决?

热门文章

  1. keras(X_train, X_test, y_train, y_test)
  2. 基于内容的图像检索技术:从特征到检索
  3. 深度解密换脸应用Deepfake
  4. 2018谷歌学术影响因子发布:CVPR排名泛AI领域第一
  5. Python绘制散点对比图
  6. getParameter和getAttribute区别(超详细分析)
  7. Oracle基础查询
  8. FISCO BCOS源码(2)启动顺序
  9. 前端----CSS层叠样式表
  10. 用友t3服务器更改是哪个文件夹里,用友t3服务器地址变更