2017-07-28 17 views
2

以下のようなxmlメッセージ本文があります。属性 'SenderId'の文字列長が0より大きいかどうかを調べる必要があります。これを見つけることができません。属性の文字列長を調べるXpath関数

XMLメッセージ

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

私はSENDERID

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

の文字列の長さを取得するために、XPath関数の下に使用しています。しかし、それが機能していません。 @SenderIdの属性値がApp1あるので

+0

XPathを実行する環境、つまりホストプログラミング言語/ DOM APIとは何ですか? – Tomalak

+1

それは春に基づいたプロジェクトです、Java DSLでプログラミング – Deeps

答えて

1

このXPathの、

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

は4の文字列の長さを有し、4を返します。あなたがtrueを返すしたい場合は、> 0を付加することによって、その戻り値をテストすることができます正の数。

local-name()を経由して名前空間を破っに好適である、あなたのXPathで名前空間接頭辞を宣言して使用する方法を学習しHow does XPath deal with XML namespaces?を参照してください。

関連する問題