<d>
元素内的JSON内容仅为text()
节点。 JSON字符串中的“applicationId”不会被评估为属性。 CDATA被使用的事实是无关紧要的。
您的谓词正在试图从app:Data
中选择text()
,这些元素有@applicationId
,并且没有。
使用contains()
功能来限制元素具有在text()
//app:ApplicationStatusNotificationRequestMessage/
app:Data[contains(., 'applicationId')]/text()
JSON属性如果你想获得的applicationID值,则需要解析JSON字符串。有很多方法可以做到这一点。根据您使用的XPath版本,您将拥有更多/更少的选项。你会如何获取价值的几个例子:
的XPath 3.0 - 使用json-to-xml():
json-to-xml(//app:ApplicationStatusNotificationRequestMessage/
app:Data[contains(., 'applicationId')]/text())/*/*[@key='applicationId']/text()
的XPath 2.0 - 使用replace():
replace(//app:ApplicationStatusNotificationRequestMessage/
app:Data[contains(., 'applicationId')]/text(), '.*applicationId.*?:.(\d+).,.*', '$1')
的XPath 1.0 - 使用substring-before()和substring-after():
substring-before(
substring-after(//app:ApplicationStatusNotificationRequestMessage/
app:Data[contains(., 'applicationId')]/text(),
'applicationId":"'),
'",')
你有一个错误: POST –
Borna