如何打印非常漂亮的XML

时间:2014-10-02 07:02:54

标签: java xml

我希望我的XML打印得不漂亮,即所有在一行上,元素之间没有空格。 e.g。

<element>value</element><element><nested>value</nested></element>

(删除了异常处理)

public String transform(Document doc) {

    javax.xml.transform.Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty(OutputKeys.INDENT, "no");
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

    DOMSource source = new DOMSource(doc);
    transformer.transform(source, new StreamResult(stringWriter));
    String result = stringWriter.toString();

    return result;
}

即使OutputKeys.INDENTno,当我的输入是用漂亮的XML创建的时候,我仍然会得到漂亮的XML。

我查看了How to unformat xml file,但我不能只从我的XML中删除换行符和空格,因为我的数据可能包含它们。我不是真的想解析字符串并自己格式化,但我无法想到任何其他解决方案。

我正在传递Document对象,因此我无法修改DocumentBuilder(如此处https://stackoverflow.com/a/15462951/3887715所示)。我可以使用StringBuilder解决方案(https://stackoverflow.com/a/13163891/3887715),但我担心如果任何注释跨越多行,它们将被合并。

但是,这主要用于日志记录,所以缺少任何其他解决方案,我认为StringBuilder是最干净的。

0 个答案:

没有答案