If you use LSSerializer rather than Transformer, you can use LSSerializer.setNewLine to control newlines.
Ensure Unix-style line endings used when generating XML on Windows with Java
-
29-06-2022 - |
Question
I am currently outputting an XML document to a file in Java as follows:
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);
However, when run on Windows, this produces output with Windows-style line-endings. I would like to have Unix-style line endings produced regardless of OS. How I can do this?
Solution 2
OTHER TIPS
The difference between operating systems is because it is used internally the method println
.
Before saving the file, change the line separator:
System.setProperty("line.separator", "\n");
You could use a static block.
Unsure if the classes you're using use the system properties, but if they do, this should work
System.setProperty("line.separator", "\n");
Related question but for Windows line endings
If not, you'll have to do as Foo Bar User said in his comment, replace them manually.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow