如何使用 XPath 获取两个节点之间的文本

how to get the text between two nodes using XPath

当节点具有相同的文本时,我不知道如何获取值。

这是 xml 数据。

<dict>
    <key>VALUE1</key>
    <dict>
        <key>us</key>
        <string>Zubehör</string>
        <key>fr</key>
        <string>Accessories</string>
    </dict>

    <key>VALUE2</key>
    <dict>
        <key>us</key>
        <string>test2</string>
        <key>fr</key>
        <string>test</string>
    </dict>
</dict>

如何通过搜索文本 Accessories 来获取值 VALUE1?真正的名单要大得多。给出的唯一文本是 Accessories。并且我需要找到它父级的同级文本 --> VALUE1

这是一种可能的方式,给定这样的描述和那个小样本 XML :

//dict[dict/string = 'Accessories']/key

虽然我们不能确定,这将与实际 XML 一起正常工作,因为发布的示例 XML 包含 目标元素.

更新:

要响应更新后的 XML 示例,您可以尝试这种方式:

//dict/dict[string = 'Accessories']/preceding-sibling::key[1]

xpath 定位包含关键字字符串的 dict 元素,然后 return 前面的第一个兄弟 key 元素。