向 JAXB 生成的 POJO 添加解组方法
Add unmarshalling method to JAXB generated POJOs
我有一堆 XSD 我使用 jaxb maven 插件将其转换为 POJO。
出于日志记录的目的,我希望有一个 "unmarshal" 方法直接集成到 JAXB 对象中,这样我就可以调用类似 generatedPOJO.toXMLString()
的方法,知道 generatedPOJO
是通过 JAXB 从 XSD 文件生成的 POJO。
我试图查看 Custom bindings documentation,但一无所获。
感谢您的帮助。
编辑: 我想要的是 JAXB,除了从 XSD 文件生成 POJO 之外,还向这些 POJO 添加了一个 toXMLString()
方法。
此方法需要由 JAXB 生成,因为我无法编辑生成的 POJOS。
总之,不要这样做,这不是一个好的设计。
同时,正如@j.con 指出的那样,可以使用 -xinject-code
或自定义 XJC 插件向生成的 classes 添加更多方法,添加编组方法这不是一个好主意。使用 JAXB API,它会很丑陋。
要执行任何操作,您需要 JAXBContext
的一个实例。您要么将其传递给您的方法,要么在方法中实例化。
后者不太好,因为 JAXBContext
是为 class es 或包(上下文路径)的集合实例化的。因此,您基本上必须进行预设,您的 class 可以与 class 一起使用。这样做,您将失去灵活性。
接下来,JAXB 编组器会产生很多东西,不仅是 strings/stream 结果,还有 DOM 或 SAX 或 StAX。 JAXB API 对此非常满意。只选择字符串似乎是一个短视的选择。
最后,与简单的实用程序服务或 class 相比,我认为添加 toXMLString()
或其他任何语法糖都不算什么。为此侵入代码生成真的感觉像是错位的努力。
我有一堆 XSD 我使用 jaxb maven 插件将其转换为 POJO。
出于日志记录的目的,我希望有一个 "unmarshal" 方法直接集成到 JAXB 对象中,这样我就可以调用类似 generatedPOJO.toXMLString()
的方法,知道 generatedPOJO
是通过 JAXB 从 XSD 文件生成的 POJO。
我试图查看 Custom bindings documentation,但一无所获。
感谢您的帮助。
编辑: 我想要的是 JAXB,除了从 XSD 文件生成 POJO 之外,还向这些 POJO 添加了一个 toXMLString()
方法。
此方法需要由 JAXB 生成,因为我无法编辑生成的 POJOS。
总之,不要这样做,这不是一个好的设计。
同时,正如@j.con 指出的那样,可以使用 -xinject-code
或自定义 XJC 插件向生成的 classes 添加更多方法,添加编组方法这不是一个好主意。使用 JAXB API,它会很丑陋。
要执行任何操作,您需要 JAXBContext
的一个实例。您要么将其传递给您的方法,要么在方法中实例化。
后者不太好,因为 JAXBContext
是为 class es 或包(上下文路径)的集合实例化的。因此,您基本上必须进行预设,您的 class 可以与 class 一起使用。这样做,您将失去灵活性。
接下来,JAXB 编组器会产生很多东西,不仅是 strings/stream 结果,还有 DOM 或 SAX 或 StAX。 JAXB API 对此非常满意。只选择字符串似乎是一个短视的选择。
最后,与简单的实用程序服务或 class 相比,我认为添加 toXMLString()
或其他任何语法糖都不算什么。为此侵入代码生成真的感觉像是错位的努力。