我有一堆XSD,我用jaxb maven插件转换成POJO。
出于记录目的,我希望有一个" unmarshal"方法直接集成在JAXB对象中,因此我可以调用generatedPOJO.toXMLString()
之类的东西,知道generatedPOJO
是通过JAXB从XSD文件生成的POJO。
我试图查看Custom bindings documentation,但我没有得到任何结果。
感谢您的帮助。
编辑:我想要的是JAXB除了从XSD文件生成POJO外,还为这些POJO添加了toXMLString()
方法。
此方法需要由JAXB生成,因为我无法编辑生成的POJOS。
答案 0 :(得分:2)
简而言之,不要这样做,这不是一个好的设计。
虽然正如@j.con指出的那样,可以使用-xinject-code
或自定义XJC插件向生成的类添加更多方法,但添加编组方法并不是一个好主意。使用JAXB API,它会非常难看。
要做任何事情,您需要JAXBContext
的实例。要么将它传递给方法,要么在方法中实例化。
后者不是很好,因为JAXBContext
被实例化为类或包的集合(上下文路径)。因此,您基本上必须预设,您的课程可以一起使用哪些课程。这样做,你就失去了灵活性。
接下来,JAXB marshallers会产生很多东西,不仅仅是字符串/流结果,还有DOM或SAX或StAX。 JAXB API非常酷。只选择字符串似乎是一个短视的选择。
最后,我认为与简单的公用事业服务或类相比,添加toXMLString()
或其他任何东西都是如此甜美的语法糖。而攻击代码生成真的感觉就像是错位的努力。