是否可以使用StAX(特别是woodstox)使用换行符和制表符格式化输出xml,即以下列形式:
someData
代替:
someData
如果在woodstox中无法做到这一点,是否有其他轻量级库可以做到这一点?
有com.sun.xml.txw2.output.IndentingXMLStreamWriter
XMLOutputFactory xmlof = XMLOutputFactory.newInstance(); XMLStreamWriter writer = new IndentingXMLStreamWriter(xmlof.createXMLStreamWriter(out));
通过JDK : transformer.setOutputProperty(OutputKeys.INDENT, "yes");
.
如果您正在使用StAX游标API,则可以通过将XMLStreamWriter包装在缩进代理中来缩进输出.我在自己的项目中试过这个并且效果很好.
使用JDK Transformer:
public String transform(String xml) throws XMLStreamException, TransformerException { Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); Writer out = new StringWriter(); t.transform(new StreamSource(new StringReader(xml)), new StreamResult(out)); return out.toString(); }