2011-08-04 22 views
2

私はwsimportから生成されたJAXBデータクラスを持っています。これをコンソールやログに出力したいと思います。残念ながら、toStringは生成されません。JAXB生成Beanの印刷

データオブジェクトを印刷する最も簡単な方法は何ですか?読み込み可能であれば、出力が元のXMLかそれ以外のものであるかどうかは関係ありません。

クラスは有効なbean(gettersとsettersという名前が適切です)のように見えます。そのため、Beanで動作するものはすべて問題ありません。

答えて

3

コンソールに印刷するため、この試してみてください。StringWriterを使用し、Stringにそれを取得するには

jaxbContext.createMarshaller().marshal(jaxbObject, System.out); 

を:

StringWriter writer = new StringWriter(); 
jaxbContext.createMarshaller().marshal(jaxbObject, writer); 
String xmlString = writer.toString(); 

次の操作を実行する必要があるたJAXBContextオブジェクトを取得するには:

JAXBContext jaxbContext = JAXBContext.newInstance(<WhateverClass>.class); 

ここで、<WhateverClass>はth eタイプはjaxbObjectです。あなたも行うことができる必要があります:

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

あなたはコンテキストとあなたの文体の好みを定義している場所に応じて。 JAXBContextはスレッドセーフなので、1つのインスタンスを定義して共有するとよいでしょう。 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'を作成することができます。 –

関連する問題