私はwsimport
から生成されたJAXBデータクラスを持っています。これをコンソールやログに出力したいと思います。残念ながら、toStringは生成されません。JAXB生成Beanの印刷
データオブジェクトを印刷する最も簡単な方法は何ですか?読み込み可能であれば、出力が元のXMLかそれ以外のものであるかどうかは関係ありません。
クラスは有効なbean(gettersとsettersという名前が適切です)のように見えます。そのため、Beanで動作するものはすべて問題ありません。
私はwsimport
から生成されたJAXBデータクラスを持っています。これをコンソールやログに出力したいと思います。残念ながら、toStringは生成されません。JAXB生成Beanの印刷
データオブジェクトを印刷する最も簡単な方法は何ですか?読み込み可能であれば、出力が元のXMLかそれ以外のものであるかどうかは関係ありません。
クラスは有効なbean(gettersとsettersという名前が適切です)のように見えます。そのため、Beanで動作するものはすべて問題ありません。
コンソールに印刷するため、この試してみてください。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つのインスタンスを定義して共有するとよいでしょう。 Marshaller
とUnmarshaller
はそのような保証はしません。だから彼らは必要に応じて作成する必要があります。
'jaxbContext'はどこにありますか? –
@Bartこのオブジェクトが見つかる場所のパッケージ名のリストを渡して、[JAXBContext](http://download.oracle.com/javase/6/docs/api/javax/xml)のインスタンスを取得する必要があります。 /bind/JAXBContext.html)。 – asgs
@asgs - クラスまたはパッケージ名(パッケージに 'jaxb.index'ファイルまたは' ObjectFactory'を含む)を渡して、新しい 'JAXBContext'を作成することができます。 –