学习笔记——XPath基础

原创 2012年03月29日 21:21:23

在XPath中经常使用的概念:

1:基本值(原子值,Atomic value):用于表示简单的数据值;

2:项(Iterm):一个项代表一个节点或一个基本值,XPath2.0引入;

3:节点集:多个节点;

4:序列:Item和节点集就是序列,XPath2.0引入。

 

XPath支持的节点类型

  • root nodes

  • element nodes

  • text nodes

  • attribute nodes

  • namespace nodes

  • processing instruction nodes

  • comment nodes

 

指定数据类型方法:

使用datatype(data)格式。

e.g.

double(data)

 

 

Location Steps

location step由三个部分组成:

1:一个轴:指定所选节点和当前节点之间的关系;

2:一个节点测试:指定选取节点的节点类型;

3:N个限定谓语:使用任意的表达式进一步提炼所选节点集。

格式

Step:

AxisSpecifiter NodeTest Predicate* | AbbreviatedStep

AxisSpecifier:

AxisName::| AbbrevlatedAxisSpecifier

 

XPath所支持的轴:

ancestor

ancestor-or-self

attribute

child

descendant

descendant-self

following

following-sibling

namespace

parent

preceding

preceding-sibling

self

 

节点测试

XPath支持的节点测试:

1:NameTest:直接具体名称;

2:node():选择轴里的所有节点;

3:text():选择文本节点;

4:comment():选择注释节点;

5:processing-instruction:选择处理指令节点;

6:*:通配符。

 

简化写法

1:省略child轴:因为child为默认轴,所以当轴是child时,可以省略轴;

2:@代表属性轴;

3://代表后代节点:其实就是/descendant-or-self::node()/的简写;

4:.代表当前节点:self::node()的简写;

5:..代表父节点:parent::node()的简写。

 

 

运算符

算数运算符:+、-、*、div、mod。

算数运算时,所有操作都会自动转换为数值。

注意:

1:XPath所有数值都是double类型。

2:对于字符串数值,XPath会截取前后的空白,并转换为数值,如果字符串不是数组,将转换成NaN;

3:ture转换成1,false转换成0;

4:对于节点集,其会先转换成字符串;

5:在表达式中计算两个元素之差时,应在减号前后增加空格。

 

比较运算符:=、!=、<、<=、>、>=。

 

逻辑运算符:and、or。

 

|:用于组合多个路径。

 

表达式

XPath2.0提供了几个表达式:

 

for表达式

作用:循环访问序列中的每一项。

格式:

ForExpr:

SimpleForClause return ExprSingle

SimpleForClause:

for $VarName in ExprSingle (, &VarName in ExprSingle)*

 

if表达式

格式:

if (condition1)

then rtVal1

[else if (condition2)

then rtVal2

...]

else

otherVal

 

示例

if ($widget1/unit-cost < $widget2/unit-cost) 
  then $widget1
  else $widget2

 

if ($part/@discounted) 
  then $part/wholesale 
  else $part/retail

 

some/every表达式

作用:判断序列中的全部项或者任一项是否满足某个条件。

格式

some | every &VarName in ExprSingle (, $varName in ExprSingle)* satisfies ExprSingle

 

示例:

some $x in (1, 2, "cat") satisfies $x * 2 = 4

 

 

 

xpath简单入门

XPath目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素。可以把XPath比作文件管理路径:通过文件管理路径,可以按照一定的规则查找到所需要的文件;同样,依据XPath所制定的规则,...
  • sl0007
  • sl0007
  • 2013年02月19日 15:50
  • 481

【C#】C#基础学习笔记

【C#】C#基础学习笔记 由于之前用过几年C/C++,现只针对C#的差异或C/C++遗忘的知识点学习总结。 1、数据类型: 值类型:和C/C++类似。 指针类型:和C/C++类...
  • woaini454186694
  • woaini454186694
  • 2016年05月28日 18:48
  • 836

Scrapy 入门学习笔记(2) -- xpath 与 css 解析以及解析网页示例

最近学习用 Scrapy 框架写爬虫,简单来说爬虫就是从网上抓取网页,解析网页,然后进行数据的存储与分析,将从网页的解析到数据的转换存储。将学习过程中用到的解析技术,Scrapy 的各个模块使用与进阶...
  • Ahri_J
  • Ahri_J
  • 2017年05月15日 20:33
  • 4775

网络爬虫基础-Xpath语法(一)

前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作。 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环...
  • gongbing798930123
  • gongbing798930123
  • 2018年01月02日 20:42
  • 144

简单了解JavaScript操作XPath的一些基本方法

XPath构建于XML之上,以表示路径的方式来确定XML中元素位置,事实上并不是太常用,这里我们来简单了解JavaScript操作XPath的一些基本方法 # Xpath现在很少被我们使用,因为J...
  • liuzx32
  • liuzx32
  • 2017年03月03日 23:59
  • 494

Python3 基础学习笔记

Python3 基础学习笔记这篇博客不是完整的python教程,只是我在学习python3时记下的一些容易忘记的或比较重要的知识点,里面的代码大多是转自 廖雪峰的python3教程 和 菜鸟教程 。不...
  • Cyiano
  • Cyiano
  • 2017年04月10日 19:58
  • 920

python3 学习笔记

python3 学习笔记 –每天半小时标签(空格分隔): python32016年2月24日第一个python程序输入: input() 输出: print()2016年2月25日python基础 ...
  • ieminndsc
  • ieminndsc
  • 2016年02月26日 09:01
  • 315

JavaEE入门:学习笔记02

1.8右移两位,左移两位结果分别是多少?      答:8>>2=2;8            2.i++,++i的问题:      如:i=1;      i++ +2 ->3;相当于i+2 ->3...
  • u013829997
  • u013829997
  • 2014年03月02日 22:55
  • 284

PHP基础学习笔记

1、PHP中cookie的使用 cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能...
  • yubo_725
  • yubo_725
  • 2015年04月01日 15:19
  • 390

Python基础学习笔记之(二)

Python基础学习笔记之(二)zouxy09@qq.comhttp://blog.csdn.net/zouxy09 六、包与模块1、模块module         Python中每一个.py脚本定...
  • zouxy09
  • zouxy09
  • 2013年11月24日 16:04
  • 15078
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——XPath基础
举报原因:
原因补充:

(最多只允许输入30个字)