我想将节点转换为字符串,因为我正在使用以下代码片段:
private static String nodeToString(Node node) {
StringWriter sw = new StringWriter();
try {
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
t.setOutputProperty(OutputKeys.INDENT, "no");
t.transform(new DOMSource(node), new StreamResult(sw));
} catch (TransformerException te) {
Log.e(TAG, "Node transformation exception " + te.getMessage());
}
return sw.toString();
}
我面临的问题是,它正在删除节点末尾的空间。
<Message Text="OK" /> to <Message Text="OK"/>
谁能告诉我如何避免修剪空间? 任何帮助将不胜感激。
此致 Yuvi
答案 0 :(得分:2)
有谁能告诉我如何避免修剪空间?
由于<Message Text="OK" />
和<Message Text="OK"/>
完全相同,因此对正确的XML解析器没有任何区别。
如果出于某种原因 重要(例如,您将此输出提供给无法处理空间的非XML工具),那么您可以尝试Saxon变压器实现,支持XSLT 2.0。 XSLT 2.0提供了一个"xhtml" output method,您可以使用它来代替默认的“xml”,并按照XHTML的HTML兼容性指南进行序列化。除此之外,这意味着它使用空格(<br />
)或“扩展”形式(<example></example>
)写入所有空标记。
答案 1 :(得分:1)
DOM模型没有提供在XML标记内表达额外空格的方法。它只包含有关标记名称,属性及其值的信息。
从XML的角度来看,额外的空格并不重要 - 两个表示都是相同的。