2013-09-30 55 views
2

在Windows上生成XML時,我目前輸出的XML文檔Java中的文件,如下所示使用Unix風格的行結束符:確保與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風格的行結尾。我如何做到這一點?

+0

我不確定這是否是您的最佳解決方案,但'string.replaceAll(「\ r \ n」,「\ n」)'會做 –

+0

如果答案有幫助,您可以[接受它](http ://meta.stackexchange.com/a/5235/227183)。 –

回答

2

如果您使用LSSerializer而不是Transformer,則可以使用LSSerializer.setNewLine來控制換行符。

+0

這不適用於Java 6和7. https://community.oracle.com/message/6853346#6853346 – basin

2

不確定,如果你使用使用該系統的特性,但類,如果他們這樣做,這應該工作

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

Related question but for Windows line endings

如果不是這樣,你必須做,因爲富欄用戶在他的評論中說,手動替換它們。

+0

它適用於'TransformerFactory' API –

4

操作系統之間的差異是因爲它在內部使用方法println。 保存文件之前,更改行分隔符:

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

你可以使用一個靜態塊。