xpathGetString 总是返回空字符串

xpathGetString always returning empty string

我正在尝试使用 xpathGetString

从 CustomXmlPart 读取属性
String abcd = lc_CustomXmlPart.xpathGetString( "/Contract/Currency[1]/@Code", "" );
System.out.println( abcd );

但它总是 returns 空字符串。

Xml 看起来像这样:

<Contract xmlns="http://abc.123.cz" TypeCode="HO" IssueDate="2017-02-11">
    <Currency Code="EUR" Name="Default" PrintCode="€"></Currency>
</Contract>

有人可以告诉我我做错了什么吗?

XML 定义了一个默认命名空间 (xmlns),而您试图在不指定该命名空间的情况下访问其节点。

您可以更改 XPath 以访问任何命名空间的节点:

  • 在 XPath 1.0 中:/*[local-name()='Contract']/*[local-name()='Currency'][1]/@Code

  • 在 XPath 2.0 中:/*:Contract/*:Currency/@Code

但最好指定它:

String abcd = lc_CustomXmlPart.xpathGetString( "/abc:Contract/abc:Currency[1]/@Code", "xmlns:abc=\"http://abc.123.cz\"" );

我不确定确切的语法,请查看您的 API 文档;我敢肯定的是,有一种方法可以指定您可以在 XPath 中使用的前缀映射。

请注意,可能有一种方法可以为您的 XPath 查询指定默认名称空间,这将导致相同的结果(选择特定名称空间的节点)而无需修改您的 XPath。