我正在尝试使用xpathGetString
从CustomXmlPart读取属性String abcd = lc_CustomXmlPart.xpathGetString( "/Contract/Currency[1]/@Code", "" );
System.out.println( abcd );
但它总是返回空字符串。
Xml看起来像这样:
<Contract xmlns="http://abc.123.cz" TypeCode="HO" IssueDate="2017-02-11">
<Currency Code="EUR" Name="Default" PrintCode="€"></Currency>
</Contract>
有人可以告诉我我做错了什么吗?
答案 0 :(得分:0)
XML定义了一个默认命名空间(xmlns
),您试图访问其节点而不指定该命名空间。
您可以更改XPath以访问任何命名空间的节点:
:/*[local-name()='Contract']/*[local-name()='Currency'][1]/@Code
:/*:Contract/*:Currency/@Code
但最好指明一下:
String abcd = lc_CustomXmlPart.xpathGetString( "/abc:Contract/abc:Currency[1]/@Code", "xmlns:abc=\"http://abc.123.cz\"" );
我不确定确切的语法,请查看您的API文档;我确定的是,有一种方法可以指定您可以在XPath中使用的前缀映射。
请注意,可能有一种方法可以为XPath查询指定默认命名空间,这会导致相同的结果(选择特定命名空间的节点),而无需修改XPath。