• ベストアンサー

DOMでパースしているXML全体の出力方法

お世話になります。 JavaでDOMを使ってXML操作をしたいと考えております。 おおよそ、以下のソースでparseできるところまで確認できました。 DOMParser parser = new DOMParser(); parser.parse("XMLファイルパス"); Document doc = parser.getDocument(); 開発中なので、DOM操作した結果のXMLを随時コンソールやログに 出力させたいのですが、たとえばdoc.toString()してもnullとなり、 正常に出力されません。 以下のようにElementを取得すると正常にアクセスできていることは 確認しています。 Element rootEl = doc.getDocumentElement(); System.out.println(rootEl.getNodeName()); なお、DOMライブラリにはxercesを用いております。 Dom4jのAPIも見てみましたが、それらしいメソッドを見つけることが できていません。 簡単にXMLを出力できることが理想です。 一般的な方法、よくやる手法など、みなさんよりご教示頂きたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Transformerを使う必要があるのではないでしょうか?

参考URL:
http://www.mclnet.co.jp/tech/java/xml/pretty.html
TAKE-See
質問者

お礼

参考URLの通り実装してみたところ、期待する動作となりました! なるほど、xalanを使うのですね。 ありがとうございました。

その他の回答 (2)

回答No.2

質問を検証しようと思ったんだけど 一つ聞いて良いかなあ… DOMParserクラスの名前空間はどこ? javax.xml.parsers.DocumentBuilder.Parseを使わなかった理由は何だ? http://java.sun.com/javase/6/docs/api/javax/xml/parsers/package-summary.html #getNodeValueでソースを期待するのは間違っていると思う この表見ても分かるとおり http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1950641247

TAKE-See
質問者

お礼

> DOMParserクラスの名前空間はどこ? com.sun.org.apache.xerces.internal.parsers.DOMParser です。 > javax.xml.parsers.DocumentBuilder.Parseを使わなかった理由は何だ? 下記のサイトを参考にしたためです。 http://www.utj.co.jp/xml/dev/dom/dom_1.html > #getNodeValueでソースを期待するのは間違っていると思う 確かに、W3CのドキュメントにDocumentのNodeValueはnullと書いてますね。 勉強になりました。英語は苦手ですが、読むべきですね。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

今環境がないから確認できないけど Nodeインタフェースの メソッドを使ってできたはず

TAKE-See
質問者

お礼

早速のご連絡ありがとうございます。 DocumentインタフェースはNodeインタフェースのサブインタフェース ですので、Nodeインタフェースのメソッド(getNodeValueなど)は 試していたつもりです。実際、getNodeValueではnullが返ります。 具体的なコードサンプルなどや、参考サイトがあれば大変助かります。

関連するQ&A