【发布时间】:2013-09-16 17:38:50
【问题描述】:
我正在尝试使用 JAXWS 和 wsimport 使用 Web 服务。 WSIMPORT 工具生成了所有必需的类,我可以毫无问题地调用该服务。
但是,我注意到在响应包含具有有效属性值的 nil 元素的情况下,JAXWS 无法解组它并抛出 NullPointerException。我使用 SOAP UI 来帮助调试,这就是我发现的。响应返回以下 XML(摘录):
<externalIdentifiers>
<identifierType code="2" name="Passport" xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<identifierValue/>
<issuingCountry xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</externalIdentifiers>
在我的 Java 代码中,当尝试读取上述标识符类型的“名称”属性时,它会抛出 NPE:
if(id.getIdentifierType() == null)
{
System.out.println("NULL");
}
System.out.println("Identifier Type: " + id.getIdentifierType().getName());
输出:
NULL
Exception in thread "main" java.lang.NullPointerException
对我来说,在响应中看起来确实是一个合理的响应,identifierType 设置为 xsi:nil="true"。根据 W3C,这也是完全有效的 XML。问题是,这种情况下如何读取code、name等属性值?
【问题讨论】:
标签: attributes jaxb jax-ws null