Was ist der einfachste Weg, um die String-Darstellung eines XML-Dokuments zu erhalten?org.w3c.dom.Document
) zu erhalten? Das heißt, alle Knoten befinden sich in einer einzelnen Zeile.
Als Beispiel aus
<root>
<a>trge</a>
<b>156</b>
</root>
(Dies ist nur eine Baumdarstellung, in meinem Code ist es ein org.w3c.dom.Document
Objekt, daher kann ich es nicht als Zeichenfolge behandeln.)
zu
"<root> <a>trge</a> <b>156</b> </root>"
Vielen Dank!
Antworten:
Angenommen,
doc
Ihre Instanz istorg.w3c.dom.Document
:quelle
replaceAll
ist wahrscheinlich nicht erforderlich , wenn Sie einen anderen Ausgang Eigenschaft hinzufügen:transformer.setOutputProperty(OutputKeys.INDENT, "no");
writer.getBuffer().toString()
kann nur seinwriter.toString()
OutputKeys.INDENT
Zeile bietet einen zusätzlichen Vorteil , da Sie sie dann auch so einstellen können,"yes"
dass das Leerzeichen beibehalten wird - wenn Sie dies möchten (in meiner Situation habe ich festgestellt, dass das EntfernenreplaceAll
des Leerzeichens nicht funktioniert, um das Leerzeichen in die Zeile aufzunehmen Zeichenfolge).Verwenden Sie den Apache XMLSerializer
Hier ist ein Beispiel: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1
Sie können dies auch überprüfen
http://www.netomatix.com/XmlFileToString.aspx
quelle
Zuerst müssen Sie alle Zeilenumbrüche in all Ihren Textknoten entfernen. Anschließend können Sie eine Identitätstransformation verwenden, um Ihren DOM-Baum auszugeben. Schauen Sie sich den Javadoc an
TransformerFactory#newTransformer()
.quelle