2011-08-04 69 views
2

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

打印数据对象最简单的方法是什么?只要它是可读的,输出是否是原始XML或其他内容并不重要。

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

回答

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>是第e类型jaxbObject是。你应该也可以这样做:

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

取决于你在哪里定义上下文和你的风格偏好。 JAXBContext是线程安全的,因此可以定义一个实例并共享它。 MarshallerUnmarshaller虽然没有这样的保证。所以他们需要按需创建。

+0

你从哪里得到'jaxbContext'? –

+0

@Bart你必须传递可以找到该对象的包名列表,以获取[JAXBContext]的实例(http://download.oracle.com/javase/6/docs/api/javax/xml /bind/JAXBContext.html)。 – asgs

+0

@asgs - 您可以传递类或包名(包中包含'jaxb.in​​dex'文件或'ObjectFactory')来创建新的'JAXBContext'。 –