Вдохновленный первым параметром комментария bdoughan в этом посте, я написал собственный писатель для удаления пустой строки в файле XML следующим образом:
public class XmlWriter extends FileWriter {
public XmlWriter(File file) throws IOException {
super(file);
}
public void write(String str) throws IOException {
if(org.apache.commons.lang3.StringUtils.isNotBlank(str)) {
super.write(str);
}
}
}
Для проверкипустая строка, я использовал org.apache.commons.lang3.StringUtils.isNotBlank()
метод, вы можете использовать свое собственное пользовательское условие.
Затем используйте этот писатель для маршалинга метода, как показано ниже в Java 8.
// skip other code
File file = new File("test.xml");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
try (FileWriter writer = new XmlWriter(file)) {
marshaller.marshal(object, writer);
}
Он удалит тег <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
, а также не напечатает пустую строку.