14

我使用此代码启用换行符:

    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

但我得到以下输出:

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

我想在根元素之前有换行符。我该怎么办?

4

6 回答 6

5

试试这个

transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount","2");
于 2016-08-11T12:43:03.467 回答
3

另一种解决方案是:transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,"yes"); transformer.setOutputProperty("{ http://xml.apache.org/xslt }indent-amount", "10");

于 2016-08-12T12:00:54.593 回答
1

其他答案对我不起作用,或者在我的申请中是不可接受的。这对我有用:

transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
于 2020-10-21T14:55:54.087 回答
0

您可以自己添加换行符,方法是将 a 包装Writer在 a FilterWriter(或OutputStreama 中FilterOutputStream)编码以识别该标签的结尾并在退出时添加换行符。

但这有点傻。正如斯蒂芬 C 在他的评论中指出的那样,你真的可能不应该关心这个足以打扰。

于 2012-06-30T17:24:30.937 回答
0

当声明后没有 DOCTYPE 或者您没有指定独立属性时,生成的 xml 文件往往会出现此问题。如果您没有与文件相关的 DOCTYPE,请将独立属性设置为“是”。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
于 2020-06-04T13:21:54.360 回答
-2

您可以手动插入换行符。将字符串分配给一个临时变量(假设它的 String temp)。然后做这样的事情

String filteredStr = new StringBuilder(temp).insert(temp.indexOf('>') + 1, "\n")
                    .toString();
于 2014-09-20T00:39:01.693 回答