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

3

我有以下的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))

但是它没有起作用。

你用什么环境执行XPath,也就是说,使用什么主机编程语言/DOM API? - Tomalak
1
这是一个基于Spring的项目,使用Java DSL进行编程。 - Deeps
1个回答

2

这个 XPath,

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

将返回4,因为@SenderId属性的值为App1,其字符串长度为4。如果您希望对正数返回true,则可以通过添加> 0来测试其返回值。
请参见如何处理XML命名空间的XPath?以了解如何声明和使用XPath中的命名空间前缀,这比通过local-name()来消除命名空间更可取。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接