DOM ドキュメントから XML 形式 String に変換する
スポンサードリンク
Jdk1.4 では SOAPBody.toString() で全体が xml 形式で取得できていたのが、6ではルートエレメントしかとれなくなったという事象を確認。回避策として。
Document doc = soapBody.extractContentAsDocument(); StringWriter sw = new StringWriter(); TransformerFactory tfac = TransformerFactory.newInstance(); Transformer transformer = tfac.newTransformer(); transformer.transform( new DOMSource(doc), new StreamResult(sw) ); String xml = sw.toString(); System.out.println( xml );
追記 - SOAPBody.extractContentAsDocument についての注意点
SOAPBody.extractContentAsDocument メソッドを実行することで DOM Document として SOAPBody の全内容は取得できるのですが、これを実施すると大本の SOAPBody の中身が抜き出されてしまいます。
http://java.sun.com/javase/ja/6/docs/ja/api/javax/xml/soap/SOAPBody.htm
ので、xml として出力したあとは、SOAPBody.addDocument を使用して SOAPBody に DOM Document の中身を戻してあげる必要があります。しかし、こうも変換変換を繰り返さないといかんのは心配ですね。どうしてこういう仕様になってるのかな。