2

我目前正在将 XML 文档输出到 Java 文件中,如下所示:

final Document xmldoc = toXMLDocument(docTheory);

// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(xmldoc);
StreamResult result = new StreamResult(file);

transformer.transform(source, result);

但是,当在 Windows 上运行时,这会产生带有 Windows 样式行尾的输出。无论操作系统如何,我都希望生成 Unix 风格的行尾。我怎么能做到这一点?

4

3 回答 3

5

操作系统之间的区别在于它在内部使用的方法println。在保存文件之前,更改行分隔符:

System.setProperty("line.separator", "\n");

您可以使用静态块。

于 2013-09-30T20:21:06.350 回答
2

不确定您使用的类是否使用系统属性,但如果使用,这应该可以

System.setProperty("line.separator", "\n");

相关问题,但适用于 Windows 行尾

如果没有,您必须按照 Foo Bar User 在他的评论中所说的那样手动替换它们。

于 2013-09-30T20:18:49.403 回答
2

如果您使用 LSSerializer 而不是 Transformer,则可以使用LSSerializer.setNewLine来控制换行符。

于 2013-09-30T20:23:56.500 回答