нет способа напрямую писать форматированный XML, используя javax.xml.stream.XMLStreamWriter(Java SE 6)??? Это действительно невероятно, поскольку другие XML-API, такие как JAXB и некоторые библиотеки DOM, могут это сделать. Даже эквивалент .NET XMLStreamWriter способен на этот AFAIK (если я правильно помню, что класс является System.Xml.XmlTextWriter).
Это означает, что единственный вариант, который у меня есть, - это перепрофилировать XML для создания отформатированного вывода
например:.
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);
Проблема с этим решением - это свойство "{http://xml.apache.org/xslt}indent-amount". Я не нашел никакой документации об этом, и, похоже, он не будет переносимым.
Итак, какие у меня есть другие опции, если я хочу сделать это со стандартными классами Java 6? Создайте граф объекта JAXB или DOM только для красивой печати