我有一个从wsimport
生成的JAXB数据类,我想将它打印到控制台和/或日志中。不幸的是,没有生成toString。
打印数据对象最简单的方法是什么?无论输出是原始XML还是其他内容都无关紧要,只要它是可读的。
看起来这个类是一个有效的bean(正确命名为getter和setter),所以任何与bean一起工作的东西都可能很好。
答案 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
是线程安全的,因此最好定义一个实例并共享它。 Marshaller
和Unmarshaller
虽然没有提供此类保证。所以他们需要按需创建。