在外部Jar / class上使用@XmlElementWrapper的替代方法

时间:2015-05-15 17:01:54

标签: java jaxb

TL; DR

如何使用@XmlElementWrapper注释为外部jar中的类“伪造”?

更多详情

完整的场景有点令人费解,并且有许多我不想更新的遗留代码,所以请耐心等待......在我的项目中,我们会从另一个团队获得一个jar文件。他们无法为我添加@XmlElementWrapper,因为此代码是自动生成的,并且根本没有注释。在这段代码中,有很多类都有类型化的数组到其他类。

尝试编组/解组这些类时出现问题。如果类中的类型化数组为空,则XML将不包含该属性的节点。

例如,如果外部类看起来像这样:

public class MyClass {
    private OtherClass[] myArray;
    // Getter & Setter also
}

生成的XML看起来像这样:

<MyClass>
  <OtherClass>...</OtherClass>
  <OtherClass>...</OtherClass>
  <OtherClass>...</OtherClass>
  <!-- More attributes here... -->
</MyClass>

OtherClass[] myArray中有元素时,一切都很好。 NullPointerExceptions为空时出现问题(和OtherClass[] myArray)。在这种情况下,我的XML看起来像:

<MyClass>
  <!-- More attributes here... -->
</MyClass>

因此,当XML被解组时,OtherClass[] myArraynull,我会看到一个很好的StackTrace。

在理想的世界中,我会将@XmlElementWrapper添加到OtherClass[] myArray的定义中,但正如我所说,这是一个外部类,不能以这种方式编辑。

有解决方法吗?我已经用JAXB Bindings搜索了一种方法,但到目前为止,我的搜索没有产生任何结果。

任何指针都会非常感激(即使答案是“无法完成”)。

0 个答案:

没有答案