Ich benutze Java eingebauten eingebauten Transformator, um ein DOM Dokument zu nehmen und das resultierende XML auszudrucken. Das Problem ist, dass der Text überhaupt nicht eingerückt wird, obwohl der Parameter "Einzug" explizit gesetzt wurde.Java: Wie man XML eingibt, das von Transformer
Beispielcode
public class TestXML {
public static void main(String args[]) throws Exception {
ByteArrayOutputStream s;
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Transformer t = TransformerFactory.newInstance().newTransformer();
Element a,b;
a = d.createElement("a");
b = d.createElement("b");
a.appendChild(b);
d.appendChild(a);
t.setParameter(OutputKeys.INDENT, "yes");
s = new ByteArrayOutputStream();
t.transform(new DOMSource(d),new StreamResult(s));
System.out.println(new String(s.toByteArray()));
}
}
Ergebnis
<?xml version="1.0" encoding="UTF-8" standalone="no"?><a><b/></a>
gewünschte Ergebnis
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a>
<b/>
</a>
Gedanken?
oh Mann * Slams Gesicht in Schreibtisch * dank – Mike
Scheint mir dumm, dass der Standard-Einzug 0 ist, aber zusätzlich zu 'SPIEGELSTRICH = ja "Ich musste auch folgendes hinzufügen:' t.setOutputProperty ("{http://xml.apache.org/xslt}indent-amount", "2"); ' – lapo
Vorsicht. Diese Einrückungseigenschaft funktioniert nicht in Java 5. Es tut in Java 7. Haben Sie nicht in Java versucht 6 – Hilikus