xpath是一种在XML文档中定位元素的语言,常用于xml、html文件解析,比css选择器使用方便
XML文件最小构成单元:
- element(元素节点)
- attribute(属性节点)
- text(文本)
- namespace(命名空间)
- processing-instruction(命令处理)
- comment(注释)
- root(根节点)
xpath表达式格式
xpath通过"路径表达式"来选择节点,在表现形式上与传统的文件系统类似
绝对路径(absolute path)必须用"/"起首,后面紧跟根节点,比如/step/step/...
相对路径(relative path)则是除了绝对路径以外的其他写法,比如 step/step,也就是不使用"/"起首
斜杠(/)作为路径内部的分割符
"/":表示选择根节点
"//":表示选择任意位置的某个节点
"@": 表示选择某个属性
nodename(节点名称):表示选择该节点的所有子节点
xpath定位方法
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
#bookstore :选取 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子元素。
#/bookstore/book[price>35.00] :表示选择bookstore的book子元素,且被选中的book元素的price子元素值必须大于35。
#/bookstore/book[price>35.00]/title :表示在例14结果集中,选择title子元素。
#/bookstore/book/price[.>35.00] :表示选择值大于35的"/bookstore/book"的price子元素。
#//book/title | //book/price :表示同时选择book元素的title子元素和price子元素。

浙公网安备 33010602011771号