我有一些使用Java(5.0)编写的代码,该代码从各种(缓存的)数据源构建DOM,然后删除不需要的某些元素节点,最后使用以下方法将结果序列化为XML字符串:
// Serialize DOM back into a string
Writer out = new StringWriter();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "no");
tf.transform(new DOMSource(doc), new StreamResult(out));
return out.toString();
然而,由于我要删除几个元素节点,最终序列化的文档中会有很多额外的空格。
有没有一种简单的方法在DOM被序列化成字符串之前(或同时)从中删除/折叠多余的空格?
normalize()
方法的示例。将一些 XML 字符串加载到 DOM 对象中。调用removeChild()
方法从 DOM 对象中获取一些节点。然后尝试像当前答案中那样去除空格 (//text()[normalize-space(.) = '']
)。在删除节点时会出现空行。如果先调用normalize()
,则不会发生这种情况。 - Stephan