我目前正在向Java中的文件输出一个XML文档,如下所示:
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风格的行尾的输出。 我希望不pipe操作系统如何生产Unix风格的行结尾。 我怎么能做到这一点?
如果使用LSSerializer而不是Transformer,则可以使用LSSerializer.setNewLine来控制换行符。
操作系统之间的差异是因为在内部使用了println
方法。 在保存文件之前,更改行分隔符:
System.setProperty("line.separator", "\n");
你可以使用一个静态块。
不确定你正在使用的类是否使用系统属性,但如果他们这样做,这应该工作
System.setProperty("line.separator", "\n");
相关的问题,但Windows行结束
如果没有,你必须像Foo Bar User在他的评论中所说的那样,手动替换它们。