像Eclipse这样的Java中的漂亮打印XML

时间:2015-02-16 14:05:22

标签: java xml indentation

给出以下XML结构:

    Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
    Element root = document.createElement("root");
    Element child = document.createElement("child");
    root.appendChild(child);

以下具有指定输出属性的变换器:

    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
    transformer.transform(new DOMSource(root), new StreamResult(System.out));

我得到了预期的结果:

<?xml version="1.0" encoding="UTF-8"?><root>
    <child/>
</root>

生成以下输出需要哪些输出属性?

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <child />
</root>

我需要一些东西来获取xml标题后的换行符和空标记结束前的空格。 (比如在Eclipse中格式化)

我的变压器是默认的com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl

1 个答案:

答案 0 :(得分:0)

您将通过添加

获得预期结果
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");

并拥有一个独立的文档。请参阅section 16 of the XSL Transformations (XSLT) W3C Recommendation