XMLStreamWriter: Einrückung

gibt es wirklich keine Möglichkeit, direkt zu schreiben formatierte XML mit javax.xml.stream.XMLStreamWriter (Java SE 6)??? Das ist wirklich unglaublich, wie andere XML-APIs wie JAXB und einige DOM-Bibliotheken sind in der Lage, dies zu tun. Auch die .NET XMLStreamWriter-äquivalent ist in der Lage, diese AFAIK (wenn ich mich richtig erinnere ist die Klasse System.Xml.XmlTextWriter).

Bedeutet dies, die einzige option die ich habe, ist neu Parsen der XML zu generieren, formatierte Ausgabe??

E. g.:

            StringWriter sw = new StringWriter();
    XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newFactory();
    XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(sw);
    writeXml(xmlStreamWriter);
    xmlStreamWriter.flush();
    xmlStreamWriter.close();

    TransformerFactory factory = TransformerFactory.newInstance();

    Transformer transformer = factory.newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");

    StringWriter formattedStringWriter = new StringWriter();
    transformer.transform(new StreamSource(new StringReader(sw.toString())), new StreamResult(formattedStringWriter));
    System.out.println(formattedStringWriter);

Das problem mit dieser Lösung ist die Eigenschaft "{http://xml.apache.org/xslt}indent-amount". Ich fand keine Dokumentation darüber und es scheint nicht garantiert werden tragbar sein.

Also, welche anderen Möglichkeiten habe ich, wenn ich will, um dies mit standard-Java 6 Klassen? Erstellen Sie eine JAXB-oder DOM-Objekt-graph nur für pretty-printing??

InformationsquelleAutor der Frage Puce | 2011-01-06

Schreibe einen Kommentar