打印JAXB生成的bean

时间:2011-08-04 11:53:28

标签: java logging jaxb javabeans tostring

我有一个从wsimport生成的JAXB数据类,我想将它打印到控制台和/或日志中。不幸的是,没有生成toString。

打印数据对象最简单的方法是什么?无论输出是原始XML还是其他内容都无关紧要,只要它是可读的。

看起来这个类是一个有效的bean(正确命名为getter和setter),所以任何与bean一起工​​作的东西都可能很好。

1 个答案:

答案 0 :(得分:3)

要打印到控制台,请尝试以下操作:

jaxbContext.createMarshaller().marshal(jaxbObject, System.out);

要将其转换为String,请使用StringWriter

StringWriter writer = new StringWriter();
jaxbContext.createMarshaller().marshal(jaxbObject, writer);
String xmlString = writer.toString();

要获取JAXBContext对象,您需要执行以下操作:

JAXBContext jaxbContext = JAXBContext.newInstance(<WhateverClass>.class);

<WhateverClass>jaxbObject类型的类文字。你也应该能够:

JAXBContext jaxbContext = JAXBContext.newInstance(jaxbObject.getClass());

取决于您定义上下文的位置和风格偏好。 JAXBContext是线程安全的,因此最好定义一个实例并共享它。 MarshallerUnmarshaller虽然没有提供此类保证。所以他们需要按需创建。