MB blog

エンタープライズソフトウェアのプリセールス 兼 小さな宿泊施設のマーケターによる、ちょっとテクニカルな話題のメモです。

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 の中身を戻してあげる必要があります。しかし、こうも変換変換を繰り返さないといかんのは心配ですね。どうしてこういう仕様になってるのかな。