如何使用 xpath 1.0 从 XML 数组中获取以模式开头的元素?

How to get an element which starts with a pattern from XML array using xpath 1.0?

以下XML:

<Headers>
    <string>Date:Fri, 12 Feb 2016 13:37:00 GMT</string>
    <string>Location:https://abc/1</string>
</Headers>

如何从 location header(例如 https://abc/1)获取值?

我试过下面的 XPath 1.0 没有结果。

//Headers[starts-with(/string,'Location:')]

/string 中删除前导 /,或在其前面添加一个 . :

//Headers[starts-with(string,'Location:')]

这将使表达式相对于当前 Headers 上下文。否则它表示根元素 string,我相信这不是您真正想要的。

另一个问题是,starts-with() 需要奇异值作为参数。当Headers有多个stringchild时,只会计算第一个string。您可以使用以下表达式来修复它:

//Headers[string[starts-with(.,'Location:')]]

更新:

"Location:"之后的return部分文字,可以使用substring-after():

substring-after(//Headers/string[starts-with(.,'Location:')],'Location:')
substring-after(/Headers/string[starts-with(., 'Location:')], 'Location:')