2
我有一个从wsimport
生成的JAXB数据类,我想将它打印到控制台和/或日志。不幸的是,没有生成toString。打印JAXB生成的bean
打印数据对象最简单的方法是什么?只要它是可读的,输出是否是原始XML或其他内容并不重要。
它看起来像这个类是一个有效的bean(正确命名为getters和setters),所以任何与bean一起工作的东西也可能很好。
我有一个从wsimport
生成的JAXB数据类,我想将它打印到控制台和/或日志。不幸的是,没有生成toString。打印JAXB生成的bean
打印数据对象最简单的方法是什么?只要它是可读的,输出是否是原始XML或其他内容并不重要。
它看起来像这个类是一个有效的bean(正确命名为getters和setters),所以任何与bean一起工作的东西也可能很好。
要打印到控制台,试试这个:
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
是线程安全的,因此可以定义一个实例并共享它。 Marshaller
和Unmarshaller
虽然没有这样的保证。所以他们需要按需创建。
你从哪里得到'jaxbContext'? –
@Bart你必须传递可以找到该对象的包名列表,以获取[JAXBContext]的实例(http://download.oracle.com/javase/6/docs/api/javax/xml /bind/JAXBContext.html)。 – asgs
@asgs - 您可以传递类或包名(包中包含'jaxb.index'文件或'ObjectFactory')来创建新的'JAXBContext'。 –