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