商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > xpath简介_动力节点Java学院整理

xpath简介_动力节点Java学院整理

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

XPath是什么?简单说,就是用来选择XML文件中节点的一套方法。这里的“节点”(node),可以理解为XML文件的最小构成单元,总共分七种:元素节点、属性节点、文本节点、名称空间节点、处理命令节点、注释节点和根节点。XPath能处理这所有七种,但日常工作中打交道最多的,还是元素节点(element)。所以,下面提到的“节点”和“元素”,基本可以当成一回事。

一、xpath表达式的基本格式

XPath通过“路径表达式”来选择节点,形式上跟传统文件系统路径非常像。

  • 斜杠(/)作为路径内部的分隔符。
  • 同一个节点,既可以写绝对路径,也可以写相对路径。
  • 绝对路径必须用"/"起首,紧跟根节点,比如/step/step/...
  • 相对路径则不用"/"起首,比如step/step
  • “.”代表当前节点,“..”代表当前节点的父节点。

二、选择节点的基本规则

  • nodename(节点名称):选择该节点的所有子节点。
  • /:选择根节点。
  • //:选择文档中任意位置的某个节点。
  • @:选择某个属性。

三、选择节点的实例

先看一个具体的XML文档,后面所有例子都基于它:



  
    Harry Potter
    29.99
  
  
    Learning XML
    39.95
  

【例1】bookstore:选取 bookstore 元素的所有子节点。
【例2】/bookstore:选取根节点bookstore(绝对路径)。
【例3】bookstore/book:选取所有属于 bookstore 的子元素的 book 元素(相对路径)。
【例4】//book:选择所有 book 子元素,不管它们在文档中的位置。
【例5】bookstore//book:选择所有属于 bookstore 元素的后代的 book 元素,不管它们位于 bookstore 之下的什么位置。
【例6】//@lang:选取所有名为 lang 的属性。

四、xpath的谓语条件(Predicate)

所谓“谓语条件”,就是对路径表达式附加的筛选条件。所有条件都写在方括号[]中,进一步限定节点范围。

【例7】/bookstore/book[1]:选择bookstore的第一个book子元素。
【例8】/bookstore/book[last()]:选择bookstore的最后一个book子元素。
【例9】/bookstore/book[last()-1]:选择bookstore的倒数第二个book子元素。
【例10】/bookstore/book[position()<3]:选择bookstore的前两个book子元素。
【例11】//title[@lang]:选择所有具有lang属性的title节点。
【例12】//title[@lang='eng']:选择所有lang属性的值等于"eng"的title节点。
【例13】/bookstore/book[price]:选择bookstore的book子元素,且被选中的book元素必须带有price子元素。
【例14】/bookstore/book[price>35.00]:选择bookstore的book子元素,且被选中的book元素的price子元素值必须大于35。
【例15】/bookstore/book[price>35.00]/title:在例14的结果集中,选择title子元素。
【例16】/bookstore/book/price[.>35.00]:选择值大于35的/bookstore/book的price子元素。

五、通配符

  • *:匹配任何元素节点。
  • @*:匹配任何属性值。
  • node():匹配任何类型的节点。

【例17】//*:选择文档中的所有元素节点。
【例18】/*/*:选择所有第二层的元素节点。
【例19】/bookstore/*:选择bookstore的所有元素子节点。
【例20】//title[@*]:选择所有带有属性的title元素。

六、选择多个路径

用竖线|连接多个并列的路径。

【例21】//book/title | //book/price:同时选择book元素的title子元素和price子元素。

本文转载于:https://www.jb51.net/article/120035.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注