Java: XML-Transformation, Zeilenumbruch in der Text-Knoten, bricht Einrücken
Baue ich ein XML-Dokument und ausdrucken, in einen eingerückten format mit der JVM zu bauen-in-Bibliotheken. Wenn es einen text-Knoten in das Dokument enthält einen Zeilenumbruch, es wird die Zeile an den Anfang der Zeile nicht die richtige position eingerückt
Beispielcode
ByteArrayOutputStream s;
s = new ByteArrayOutputStream();
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Transformer t = TransformerFactory.newInstance().newTransformer();
Element a;
Text b;
a = d.createElement("a");
String text = "multi\nline\ntext";
b = d.createTextNode(text);
a.appendChild(b);
d.appendChild(a);
t.setOutputProperty(OutputKeys.INDENT,"yes");
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
t.transform(new DOMSource(d), new StreamResult(s));
System.out.println(new String(s.toByteArray()));
Ausgabe
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a>multi
line
text</a>
gewünschte Ausgabe
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a>
multi
line
text
</a>
Ist es ein intelligenter Weg, um jede neue Zeile beginnen, wo der eingerückte xml-tag beginnen würde? Etwas sagt mir, dass textnode ist nicht das richtige zu verwenden? Gibt es etwas besseres?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass änderungen Ihren Einzug tatsächlich ändert sich der text-Inhalt des Knotens. also
Folge mehrere führende Leerzeichen in Ihrem text, wie Lesen von XML-apis. Ist es das, was Sie wollen ? Ich weiß, das ist nicht die Antwort auf deine Frage, aber ich bin nicht sicher, ob Sie wirklich wollen, halten Einzug. Wie werden Sie behandeln die text-Knoten eingerückt weiter unten in der XML-Struktur (d.h. mit vielen weiteren führenden Leerzeichen) ?