xpath语法及操作

firefox浏览器安装xpath checker插件

xpath是一门在xml文档中查找信息的语言,用于在XML文档中通过元素和属性进行导航

1.xpath 术语

1.1节点:元素、属性、文本、命名空间、处理命令、注释以及文档(根)节点

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>(文档结点--根节点)

         <book>

           <title lang="en">Harry Potter</title>(lang="en"--属性节点)

           <author>J K. Rowling</author> (--元素节点)

           <year>2005</year>

           <price>29.99</price>

         </book>

</bookstore>

J K. Rowling,en基本值,基本值是无父或无子的节点

节点关系:

父(parent)每个元素以及属性都有一个父

子(childrenn)元素节点可有0个,1个或多个子节点

同胞节点(sibling)拥有相同的父的节点

先辈(ancestor)某节点的父,父的父...

后代(descendant)

2.选取节点

/--从根节点选取

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

.--选取当前节点

..--选取当前节点的父节点

@--选取属性

 

练习demo.xml文件

1.选取 书店里 所有书的详细信息

/bookstore

2.选取 所有书的标题,所有书的分类签

/bookstore/book/title

 

3.选取 第一本书的定价

/bookstore/book[1]/price/text()

选取所有价格

/bookstore/book/price/text()

选取价格高于 35 的 price 节点

/bookstore/book[price>35.00]/price

4.选取 最后一本书的作者

/bookstore/book[last()]/author/text()

5.选取 倒数第二本书的 分类标签

/bookstore/book[last()-1]/@category

6.选取 包含cover属性的书的标题

/bookstore/book[@cover]/title/text()

7.选取 定价高于35的书的标题

/bookstore/book[price>35.00]/title

8.选取 定价在30到40之间的书的标题

/bookstore/book[price>35.00 and price<40.00]/title

/bookstore/book[price>35.00 and price<40.00]/title/text()

9.选取 作者多于一个的书的标题

/bookstore/book[count(author)>1]/title

10.选取 作者多于一个的书 只列出所有作者名

/bookstore/book[count(author)>1]/author/text()

11.选取 分类不是web 且价格低于40的书的分类属性值

/bookstore/book[@category!='web' and price<40.00]

12.选取 标题名称包含X的 所有书的定价值

/bookstore/book[title[contains(text(),'X')]]/price/text()

 

总结:

查询对象,层层找

一个元素是一个单独的个体,它有属性,有内容值

一个/是绝对路径,从根元素开始

两个//是相对路径,递归查找所有子孙

一个. 是当前层,两个.是上一层

@表示取属性

*叫通配符,表示任意

[]叫谓语,里面跟的是查询条件

条件支持算数运算+-*/><,条件支持逻辑运算 and or

取文本值用text(),不加@因为它是个函数

常用函数就几个,contains是包含,写法是括号加两个入参

                      text()是取文本值,也可以当做一个查询条件

                      last()取末尾,倒数第二last()-1

                      starts-with(),表示以XX开头,写法是括号加两个入参

                      not(),表示否定,把内容全包进去

                      count

1.选取 book下所有 后代节点的text值 (提示:用通配符*)

/bookstore/book/@*

2.选取 单个作者 且 分类是web的书的出版年份值

/bookstore/book[count(author)=1 and @category='web']/year/text()

3.选取 单个作者 且 定价大于30的书的分类签

/bookstore/book[count(author)=1 and price>30]/@category

4.选取 多个作者 且 标题是以X开头的 书的定价

/bookstore/book[count(author)>1 and contains(title,'X')]/price/text()

5.选取 分类是web 且作者不包括James的所有书的标题

/bookstore/book[@category='web' and not(contains(author,'James'))]/title/text()

https://xinbao.sinosig.com/

//div[@id='navBar']/div[@class='jumbotron']/nav[@class='navbar navbar-default']/div[@class='container paddinglr15']/ul[@class='nav navbar-nav navbar-right']/li[contains(a,'解决方案')]/ul[@class='nav-two navbar-nav-lev2']/li/a/span[@class='titleStyle']

//input[@id='identifyNumber']

//select[@id='identifyType']

posted on 2017-07-16 09:35  jackyu126  阅读(2848)  评论(0编辑  收藏  举报

导航