如何使用 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
有多个string
child时,只会计算第一个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:')
以下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
有多个string
child时,只会计算第一个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:')