我有xml邮件正文如下。我需要找出属性'SenderId'的字符串长度是否大于0.我无法找到它。
XML消息
<?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))
但它没有用。
答案 0 :(得分:1)
这个XPath,
string-length(//*[local-name() = 'SenderDetails']/@SenderId)
将返回4,因为@SenderId
的属性值为App1
,其字符串长度为4.如果您希望返回true,可以通过附加> 0
来测试其返回值对于正数。
请参阅 How does XPath deal with XML namespaces? ,了解如何在XPath中声明和使用名称空间前缀,这比通过local-name()
打败名称空间更为可能。