- ベストアンサー
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を出力できることが理想です。 一般的な方法、よくやる手法など、みなさんよりご教示頂きたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Transformerを使う必要があるのではないでしょうか?
その他の回答 (2)
- himajin100000
- ベストアンサー率54% (1660/3060)
質問を検証しようと思ったんだけど 一つ聞いて良いかなあ… 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
お礼
> 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)
今環境がないから確認できないけど Nodeインタフェースの メソッドを使ってできたはず
お礼
早速のご連絡ありがとうございます。 DocumentインタフェースはNodeインタフェースのサブインタフェース ですので、Nodeインタフェースのメソッド(getNodeValueなど)は 試していたつもりです。実際、getNodeValueではnullが返ります。 具体的なコードサンプルなどや、参考サイトがあれば大変助かります。
お礼
参考URLの通り実装してみたところ、期待する動作となりました! なるほど、xalanを使うのですね。 ありがとうございました。