我正在尝试缩进由 Transformer 生成的 XML。除了第一个节点 - 文档元素外,所有 DOM 节点都按预期缩进。文档元素不在新行中开始,只是在 XML 声明之后连接。
当我移至 java 1.7 时出现此错误,使用 java 1.6 或 1.5 时不会发生。
我的代码:
ByteArrayOutputStream s = new OutputStreamWriter(out, "utf-8");
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");
transformer.transform(new DOMSource(doc), new StreamResult(s));
输出:
<?xml version="1.0" encoding="UTF-8"?><a>
<b>bbbbb</b>
</a>
任何人都知道为什么?
顺便说一句,当我添加属性
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
它按预期工作,但 xml 声明已更改,它现在也具有独立属性,我不想更改 xml 声明..