Xpath函数用于查找属性的字符串长度

时间:2017-07-28 14:20:31

标签: xml xpath

我有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))

但它没有用。

1 个答案:

答案 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()打败名称空间更为可能。