我希望我的XML打印得不漂亮,即所有在一行上,元素之间没有空格。 e.g。
<element>value</element><element><nested>value</nested></element>
(删除了异常处理)
public String transform(Document doc) {
javax.xml.transform.Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
DOMSource source = new DOMSource(doc);
transformer.transform(source, new StreamResult(stringWriter));
String result = stringWriter.toString();
return result;
}
即使OutputKeys.INDENT
为no
,当我的输入是用漂亮的XML创建的时候,我仍然会得到漂亮的XML。
我查看了How to unformat xml file,但我不能只从我的XML中删除换行符和空格,因为我的数据可能包含它们。我不是真的想解析字符串并自己格式化,但我无法想到任何其他解决方案。
我正在传递Document
对象,因此我无法修改DocumentBuilder(如此处https://stackoverflow.com/a/15462951/3887715所示)。我可以使用StringBuilder解决方案(https://stackoverflow.com/a/13163891/3887715),但我担心如果任何注释跨越多行,它们将被合并。
但是,这主要用于日志记录,所以缺少任何其他解决方案,我认为StringBuilder是最干净的。