2017-07-28 36 views
2

我有如下的xml消息正文。我需要找出屬性'SenderId'的字符串長度是否大於0.我無法找到它。Xpath函數找出屬性的字符串長度

<?xml version="1.0"?> 
<Audit xmlns="http://schemas.Auditlog.xsd"> 
<MessageId>1234</MessageId> 
<SenderDetails CreatedDate="2017-Jan-12" SenderId="App1"/> 
</Audit> 

我使用下面的XPath函數來獲取SenderId

when(xpath("string-length(string(//node()[local-name()='SenderDetails']/@[local-name()='SenderId']/text()))>0)) 

的字符串的長度,但它是不工作的XML消息。

+0

您用來執行XPath的環境是什麼,即主機編程語言/ DOM API是什麼? – Tomalak

+1

這是基於Spring的項目,用Java DSL進行編程 – Deeps

回答

1

此XPath,

string-length(//*[local-name() = 'SenderDetails']/@SenderId) 

將返回4,因爲@SenderId屬性值是App1,其中有4字符串長度,如果你想爲返回true您可以通過附加> 0測試它的返回值正數。

How does XPath deal with XML namespaces?學會如何聲明和在你的XPath,而最好通過local-name()擊敗命名空間使用命名空間前綴。