【问题标题】:How to add functionality to JAXB unmarshalled objects?如何向 JAXB 未编组对象添加功能?
【发布时间】:2015-10-15 22:01:30
【问题描述】:

我有一个 XML 模式(.xsd 文件),我使用 JAXB 从中生成 Java 类。对于许多生成的类,都有相关的功能。例如,对于生成的类Dog,将有一个函数public static void bark(Dog),对于生成的类Cat,将有一个函数public static void meow(Cat)

这在 Java 这样的面向对象语言中感觉很奇怪。我想要将 XML 解组为包含有用和相关功能的对象,而不仅仅是结构。

因此,如果生成的类在包gen 中,那么我会有一个包含这些类的不同包:

public class Cat extends gen.Cat {
    public void meow() { ... }
}
public class Dog extends gen.Dog {
    public void bark() { ... }
}

有什么方法可以解组这些功能更强大的子类而不是gen.* 类?

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

    这类问题的答案通常是“使用或编写 XJC 插件”。

    您可以使用代码注入器插件将代码添加到生成的类中,请参阅此答案:

    您可以使用 JAXB2-Basics 中的继承插件扩展类或实现接口:

    免责声明:我是 JAXB2-Basics 的作者。

    从设计角度来看,模式派生类可能被视为 DTO,在这种情况下不应包含功能。然后,您将需要一个业务模型,并使用 Dozer 之类的工具在 DTO 和您的业务模型类之间进行映射。

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2020-04-10
      • 2011-04-10
      相关资源
      最近更新 更多