JAXPのDOMオブジェクトを文字列出力したい場合
// ドキュメントビルダーファクトリを生成
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
// ドキュメントビルダーを生成
DocumentBuilder builder = dbfactory.newDocumentBuilder();
// パースを実行してDocumentオブジェクトを取得
Document document = builder.parse(new BufferedInputStream(new FileInputStream("test.xml")));
// ルート要素になっている子ノードを取得
Element root = document.getDocumentElement();
// DOMオブジェクトを文字列として出力したい
System.out.println(document.toString());
これだとnullが出力されてしまいます。
// ドキュメントビルダーファクトリを生成
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
// ドキュメントビルダーを生成
DocumentBuilder builder = dbfactory.newDocumentBuilder();
// パースを実行してDocumentオブジェクトを取得
Document document = builder.parse(new BufferedInputStream(new FileInputStream("test.xml")));
// ルート要素になっている子ノードを取得
Element root = document.getDocumentElement();
// DOMオブジェクトを文字列として出力
StringWriter stringWriter = new StringWriter();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(stringWriter));
String xml = stringWriter.toString();
System.out.println(xml);
文字列出力する場合はこのように記述します。
にしてもdocument.toString()で
DOMオブジェクトの中身が文字列出力されるよう実装されててもいい気がするんですがなぜ標準で実装されてないんでしょう
誰か理由がわかる方教えてください。