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'。 –