【问题标题】:jaxb umarshalling problem: can not get the attributes on empty xml tagsjaxb umarshalling 问题:无法获取空 xml 标签上的属性
【发布时间】:2011-07-02 12:19:34
【问题描述】:

我必须使用 JAXB 将 xml-soap 字符串解组为 Java 对象。 XML 中包含大量的空标签,其中包含填充属性,例如消息中的大部分信息是这样传递的:

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

我对属性感兴趣。

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

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

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

非常感谢。

维布兰德。

【问题讨论】:

    标签: java jaxb unmarshalling


    【解决方案1】:

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

    afterUnmarshal的详细使用方法见:How can I have JAXB call a method after it has completed unmarshalling an XML file into an object?

    【讨论】:

      【解决方案2】:

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

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

      Xml 片段:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多