Лучший способ написать отформатированный XML в Java - использовать пакеты javax.xml.transform
, например:
TransformerFactory transfac = TransformerFactory.newInstance();
transfac.setAttribute("indent-number", 2);
Transformer trans = transfac.newTransformer();
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
Result result = new StreamResult(System.out);
trans.transform(new DomSource(document), result);
Вместо System.out
, используйте FileOutputStream
для файла назначения.
Кстати, в представленном вами коде есть несколько ошибок:
FileUtils.writeByteArrayToFile(userFile, getFormatedXML(document).getBytes());
Это небезопасно для разных кодировок, потому что вы использовали String # getBytes (), которая используеткодировка платформы по умолчанию и может легко привести к XML-документу с неправильным заголовком кодирования.
XMLWriter
- это класс реализации com.sun, который не переносится между JDK.(Это менее вероятно, будет проблемой для вас)