【发布时间】:2021-10-16 13:35:11
【问题描述】:
我正在尝试正确缩进(缩进 = 2)由 Java Spring Boot 应用程序编写的 XML 文件。问题是我自己没有编写 XML,我是通过将各种源 XML 的各个部分与不同的模式连接起来来创建 XML。
我的代码是:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", 2);
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
DOMSource source = new DOMSource(root.getOwnerDocument());
StreamResult file = new StreamResult(outputFile);
transformer.transform(source, file);
这似乎完全忽略了“缩进”参数:它只是复制原始 XML 文件中存在的任何缩进。
要复制节点,我都尝试了:
root.appendChild(document.adoptNode(extractedNodeToCopy.cloneNode(true)));
和
root.appendChild(document.importNode(extractedNodeToCopy, true));
但这并没有改变任何东西。
我没有收到错误消息,结果只是像原始文档一样缩进(所以每个标签都有不同的样式)。
【问题讨论】:
-
缩进仅供人类阅读。因此,如果它对您很重要,请重新读取生成的文件,对其进行解析并创建一个带有适当缩进的新输出。
-
您可以对任务使用 XSLT 转换。
-
丑陋的事情是我实际上不知道结果文件中的内容,因此重新读取和正确解析它不是一种选择。在这种情况下,我将如何使用 XSLT 转换?