web-dev-qa-db-ja.com

XMLドキュメントから文字列

XMLドキュメント(org.w3c.dom.Document)の文字列表現を取得する最も簡単な方法は何ですか?つまり、すべてのノードが1行になります。

例として、から

<root>
  <a>trge</a>
  <b>156</b>
</root>

(これはツリー表現にすぎず、私のコードではorg.w3c.dom.Documentオブジェクトなので、文字列として扱うことはできません)

"<root> <a>trge</a> <b>156</b> </root>"

ありがとう!

99
bluish

docorg.w3c.dom.Documentのインスタンスであると仮定します:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
196
WhiteFang34

Apache XMLSerializerを使用する

以下に例を示します: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1

これも確認できます

http://www.netomatix.com/XmlFileToString.aspx

2
GuruKulki

まず、すべてのテキストノードのすべての改行文字を削除する必要があります。その後、ID変換を使用してDOMツリーを出力できます。 TransformerFactory#newTransformer()のjavadocを見てください。

1
forty-two