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子元素。