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?

InformationsquelleAutor Mike | 2009-09-06
Schreibe einen Kommentar