首页 > 解决方案 > 如何使用 XPath contains()

问题描述

我的 XML

<r>
  <ul>
    <li>ModelA</li>
    <bi>Foo</bi>
  </ul>
  <ul>
    <li>ModelB</li>
    <bi>boo</bi>
  </ul>
</r>

对于特定节点值,我想提取后继节点的值。

示例当 li = ModelA 获得 bi 的值为 Foo

我的 Xpath://ul[li[contains(.,'ModelA')]]

标签: xmlxpath

解决方案


您的 XPath 不包含bi,因此它不会选择bi-Node。

从...开始

//ul/bi

选择bi-node。现在在方括号中添加条件。第一个条件是“父节点有一个-子节点li

//ul/bi[../li]

第二个条件是:li-node 包含文本:

//ul/bi[../li[contains(.,'ModelA')]]

bi但是,如果有多个节点,这可能无法满足您的要求。如果您真的bi只需要下一个节点,@ Jack Fleeting的答案可能是最好的。


推荐阅读