Ich habe einig Java (5.0) Code, der einen DOM aus verschiedenen (gecached) Datenquellen konstruiert, dann bestimmten Elementknoten entfernt, die nicht benötigt werden, serialisiert dann das Ergebnis in eine XML-Zeichenfolge mit:Wie kann man Textknoten, die nur Leerzeichen enthalten, aus einem DOM vor der Serialisierung entfernen?
// Serialize DOM back into a string
Writer out = new StringWriter();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "no");
tf.transform(new DOMSource(doc), new StreamResult(out));
return out.toString();
jedoch Da ich mehrere Elementknoten entferne, habe ich im letzten serialisierten Dokument eine Menge zusätzlicher Leerzeichen.
Gibt es eine einfache Möglichkeit zum Entfernen/Ausblenden der fremden Leerzeichen aus dem DOM vor (oder während) es in einen String serialisiert ist?
Ich mag diese "code only" -Lösung sogar besser als die XSL-Lösung, und wie Sie sagten, gibt es bei Bedarf etwas mehr Kontrolle über die Entfernung von Knoten. –
Übrigens scheint diese Methode nur zu funktionieren, wenn ich zuerst doc.normalize() aufruft, bevor ich den Knoten entferne. Ich bin mir nicht sicher, warum das einen Unterschied macht. –
Ausgezeichnete Antwort. Funktioniert für mich auch ohne normalize(). –