2011-08-04 88 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'。 –