2009-06-05 9 views
1

私はjavax.xml.soapパッケージを使用してSOAPを使用しています。SOAPMessageオブジェクトをJavaのXmlTypeアノテーション付きクラスのインスタンスに変換する

私は私のSOAPリクエストへの応答に対応したjavax.xml.soap.SOAPMessageオブジェクトを持っていると私はjavax.xml.bindので注釈されたクラスのインスタンスに変換する必要があります。 annotation.XmlType注釈。

どうすればこの変換を行うことができますか?

答えて

6

javax.xml.soap.SOAPMessageは、SAAJ APIクラスです。このリンクには、SAAJ APIとリファレンス実装の詳細が記載されています。ご使用の環境での実装は参照実装とは異なる場合がありますが、API自体にのみ関心があり、実装の詳細は考慮されていないことに注意してください。 SAAJ 3クラスの多くはDOMクラスを拡張しています(これはSAAJ 2では当てはまりますが、SAAJ 1では当てはまりません)。JAX-B 2.xのアノテーション付きの型については、SAAJ 3を扱っていると仮定できます。 。 javax.xml.soap.SOAPMessage extends org.w3c.dom.Nodeと同じように起こります。便利なことに、JAX-B 2.xはDOMツリー(またはサブツリー)をJavaタイプに容易に変換する方法を提供します。unmarshall

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Unmarshaller; 

JAXBContext jc = JAXBContext.newInstance("test.jaxb"); 
Unmarshaller unmarshaller = jc.createUnmarshaller(); 
unmarshaller.unmarshal(soapBody); 

また、あなたがJAX-P DOMSourcesoapBodyを回すことができるし、それアンマーシャリング:

次のコードは、1つの方法です。あなたが興味を持っているならば、ポイントAからポイントBに到達するためのさらに多くのラウンドアバウト方法がありますが、上記のコードスニペットであなたの問題を解決する可能性があります。

関連する問題