<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