XPath

XPath:路径表达式  

 

   xpath是一门在xml文档中查找信息的语言,xpath可用来

        在xml文档中对元素或属性进行遍历

   

   有了xpath就解决了逐层遍历

xpath是用网络路径表达式在xml文档中进行导航(快速查找)

xpath包含一个标准函数库

xpath是xslt中的主要元素

xpath是w3c标准

路径表达式:

-斜杠(/)作为路径的分隔符

-导航到同样一个节点,有相对路径和绝对路径两种

  绝对路径:必须从"/"起始,后面紧跟节点

      比如:/list/employee

  相对路径:以当前路径作为起始点

      比如: employee/name  

-"."表示当前节点

-".."表示当前节点的父节点

-nodename(节点名称):表示该节点的所有子节点

-"/"  表示跟节点

-"//" 表示选择任意位置的某个节点

-"@"  表示选择某个属性

以下面xml的文档为例:

<?xml version="1.0" encoding="utf-8" ?>

<bookstore>

<book>

<title lang="eng">harry potter</title>

<price>39.9</price>

</book>

<book>

<title lang="eng">learning XML</title>

<price>59.9</price>

</book>

</bookstore>

/bookstore  选取跟节点bookstore,这是绝对路径

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

                相对路径

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

bookstore//book  选取所有属于bookstore元素的后代的

                 book的元素

而不管他们位于bookstore之下什么位置

//@lang  选取所有名为lang的属性

谓语:

   谓语条件,就是对路径表达式的附加条件

   所有的条件,都写在[]中,表示对节点的进一步筛选

 /bookstore/book[1] 表示选择bookstore的第一个book子元素

 /bookstore/book[last()] 表示bookstore的最后一个book子元素

 /bookstore/book[last()-1] 表示bookstore的倒数第二个book子元素

 /bookstore/book[position()<3] 表示选择bookstore的

                              前两个book子元素

 //title[@lang] 表示选择所有具有lang属性的title节点

 //title[@lang='eng'] 表示所有具有lang属相,

                且值等于eng的title节点

 //bookstore/book[price]  表示选择bookstore的book子元素

                且被选中的book子元素必须带有price子元素

 /booksstore/book[price>35.0] 表示选择bookstore的

                book子元素,且选中的book子元素的price

的子元素值必须大于35.0

 /bookstore/book[price>35.0]/title

                表示在上面的例子结果中选择title子元素

 /bookstore/book/price[.>35.0]

                表示选择值大于35.0的/bookstore/book的

price子元素

通配符:

  *  表示匹配任何子元素

  @  表示匹配任何属性

  node()  表示匹配任何类型节点

  //*     选择文档中的所有元素节点

  /*/*    表示选择所有第二层的元素节点

  /bookstore/*   表示选择bookstore的所有子元素节点

  //title[@*]    表示选择所有带有属性的title元素

  

要想使用xpath必须引入第三方的jar包

   jaxen-xx-xx.jar  

   

使用xpath的api

 List SelectNodes(String xpath);

   根据xpath的参数获取xpath指定节点的信息

原文地址:https://www.cnblogs.com/songyao2018/p/8724751.html