2

我必须使用 JAXB 将 xml-soap 字符串解组为 Java 对象。XML 包含许多带有填充属性的空标签,例如消息中的大多数信息按如下方式传递:

<ID code="123" codeSystem="12.12.12"/>

我对属性感兴趣。

问题:如果我在解组后检查对象,所有空标签(如上面的标签)在 Java 对象中都没有表示(例如为空)。只有填充的标签(例如 123 已添加到 Java 对象中。也许这种行为符合 xml 标准,但我仍然对属性感兴趣。有人可以告诉我是否有办法获取属性??

可能的解决方法:通过使用绑定文件将每个元素绑定到适配器,在每个元素为 null 时为其赋予默认值 ("")。但我只成功地为简单类型做到了这一点。

使用的版本:我们使用 Java 1.6 中的 jaxb 实现

非常感谢。

威布兰德。

4

2 回答 2

1

我解决了这个问题。但问题不在于 JAXB。

发送我必须 umarshall 的 xml 的一方在元素声明中放置了一个“空名称空间”。

Xml 片段:

id 元素在其声明中包含 xmlns=""。(我认为这是一个错误)并且根标签有声明 xmlns:ns3="urn:hl7-org:v3"

出于这个原因(我认为)jaxb unmarshaller 不会将 id 元素视为消息的一部分。

于 2011-07-05T14:27:40.327 回答
1

由于 XML 属性没有默认值,我将在 afterUnmarshal 方法中实现初始化代码。在那里,您可以检查您感兴趣的所有属性并将它们设置为有效的非空值。

有关如何使用 afterUnmarshal 的详细信息,请参阅:在完成将 XML 文件解组为对象后,如何让 JAXB 调用方法?

于 2011-07-02T17:12:33.453 回答