XPath:Select child 基于有 'twins' 的兄弟姐妹

XPath: Select child based on siblings where there are 'twins'

我就是想不通。所以我有以下 XML:

<config>
<environment>
    <loc>eu</loc>
    <url>something</url>
</environment>
<environment>
    <loc>au</loc>
    <loc>ap</loc>
    <url>somethingElse</url>
</environment>

我想根据给定的 <loc> 获取 <url> 元素。

我有以下 XPath,如果我想要 eu<url>,它可以工作,但如果我想要 ,它就不起作用ap.

有效 (returns 'something')

/config/environment[loc="eu"]/url

不起作用(returns 没有,期待 'somethingElse')

/config/environment[loc="ap"]/url

我知道 /config/environment[loc[1]="ap"]/url 可以工作,但我可以有任意数量的 <loc> 元素,所以我不希望我的 XPath 如此静态/依赖于位置。

如果能提供任何帮助,我假设只是一个简单的调整,所以我可以得到 <url> 而不管 <loc> 的顺序如何,将不胜感激。

试试这个:

/config/environment/loc[text() = 'eu']/following-sibling::url

或者这个:

/config/environment/loc[text() = 'eu']/following-sibling::url[1]