文档章节

认识XPath(确定XML文档中某部分位置的语言)

吴伟祥
 吴伟祥
发布于 2018/08/28 14:36
字数 1205
阅读 45
收藏 0

3 月,跳不动了?>>>

简介

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointerXSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。

语法

选取节点 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 

下面列出了最有用的路径表达式:

表达式

描述

nodename

选取此节点的所有子节点。

/

从根节点选取。

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

.

选取当前节点。

..

选取当前节点的父节点。

@

选取属性。

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式

结果

bookstore

选取 bookstore 元素的所有子节点。

/bookstore

选取根元素 bookstore。

注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book

选取属于 bookstore 的子元素的所有 book 元素。

//book

选取所有 book 子元素,而不管它们在文档中的位置。

bookstore//book

选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。

//@lang

选取名为 lang 的所有属性

 

表达式

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。路径表达式是从一个XML节点(当前的上下文节点)到另一个节点、或一组节点的书面步骤顺序。这些步骤以“/”字符分开,每一步有三个构成成分:

  1. 轴描述(用最直接的方式接近目标节点)

  2. 节点测试(用于筛选节点位置和名称)

  3. 节点描述(用于筛选节点的属性和子节点特征)

一般情况下,我们使用简写后的语法。虽然完整的轴描述是一种更加贴近人类语言,利用自然语言的单词和语法来书写的描述方式,但是相比之下也更加啰嗦。

轴定义

轴可定义相对于当前节点的节点集。

轴名称

结果

ancestor

选取当前节点的所有先辈(父、祖父等)。

ancestor-or-self

选取当前节点的所有先辈(父、祖父等)以及当前节点本身。

attribute

选取当前节点的所有属性。

child

选取当前节点的所有子元素。

descendant

选取当前节点的所有后代元素(子、孙等)。

descendant-or-self

选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

following

选取文档中当前节点的结束标签之后的所有节点。

namespace

选取当前节点的所有命名空间节点。

parent

选取当前节点的父节点。

preceding

选取文档中当前节点的开始标签之前的所有节点。

preceding-sibling

选取当前节点之前的所有同级节点。

self

选取当前节点。

每个步均根据当前节点集之中的节点来进行计算。

步(step)包括:

  • 轴(axis)

  • 定义所选节点与当前节点之间的树关系

  • 节点测试(node-test)

  • 识别某个轴内部的节点

  • 零个或者更多谓语(predicate)

  • 更深入地提炼所选的节点集

步的语法:

轴名称::节点测试[谓语]

实例

例子

结果

child::book

选取所有属于当前节点的子元素的 book 节点。

attribute::lang

选取当前节点的 lang 属性。

child::*

选取当前节点的所有子元素。

attribute::*

选取当前节点的所有属性。

child::text()

选取当前节点的所有文本子节点。

child::node()

选取当前节点的所有子节点。

descendant::book

选取当前节点的所有 book 后代。

ancestor::book

选择当前节点的所有 book 先辈。

ancestor-or-self::book

选取当前节点的所有 book 先辈以及当前节点(如果此节点是 book 节点)

child::*/child::price

选取当前节点的所有 price 孙节点。

 

 

本文转载自:https://baike.baidu.com/item/XPath/5574064#1

吴伟祥

吴伟祥

粉丝 34
博文 504
码字总数 285832
作品 0
泉州
后端工程师
私信 提问
加载中

评论(0)

Selenium2+python自动化7-xpath定位

本文引自:Selenium2+python自动化7-xpath定位 什么是xpath呢? 官方介绍:XPath即为XML路径语言,它是一种用来确定XML1(标准通用标记语言3的子集)文档中某部分位置的语言。反正小编看这个...

不最醉不龟归
2017/06/09
150
0
Python爬虫入门 | 2 爬取豆瓣电影信息

  这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源。看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今...

Web前端社区
2018/07/25
0
0
微服务设计笔记(10)—— 版本管理

服务接口很难不发生改变,那我们该如何应对这种改变呢?下面是一些应对策略: 1 容错性读取 最好的策略就是不对接口进行破坏性修改。但这几乎是不可能的。客户端应该应用 Postel 法则 ( 也叫...

deniro
01/15
0
0
xpath入门笔记(转)

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。 起初XPath的提出的初衷是将其作为...

好铁
2016/04/23
160
0
6 HTML的简单介绍和快速获取XPath和CSS路径

Web UI 自动化其实就是在页面元素,所以再真在进入页面元素操作之前,我们先认识下我们后面会用到的一些HTML相关知识。 HTML的简单介绍 什么是HTML HTML(Hyper Text Markup Language):指的是...

米阳MeYoung
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

订单管理

订单管理 店铺后台如何管理订单 如图所示 1、功能路径 Niushop商城电脑端后台-订单 2、流程介绍 买家在商城购买商品,系统则会产生订单,而后台可查看所有订单信息,并对订单可备注 1.查看订...

Geek-Chic
9分钟前
8
0
学FPGA如何少走10年弯路?入门很重要!

与典型的微控制器相比,现场可编程门阵列FPGA是一种能够提供更强性能和灵活性的器件,本文通过解答几个有关FPGA的常见问题——什么是FPGA、为什么我会需要FPGA、如何为FPGA编程——为开发者提...

demyar
14分钟前
11
0
javascript之Bom和Dom

参考:https://www.cnblogs.com/Qian123/p/5217059.html

九重町
15分钟前
8
0
关于Redis RedLock算法的争论

内容简介:Martin上来就问,我们要锁来干啥呢?2个原因:对于第1种原因,我们对锁是有一定宽容度的,就算发生了两个节点同时工作,对系统的影响也仅仅是多付出了一些计算的成本,没什么额外的...

stys35
34分钟前
13
0
HTML使用雪碧图做背景

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>雪碧图背景图片使用</title> <style> ......

布鲁斯里
41分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部