0

我想将节点转换为字符串,因为我正在使用以下代码片段:

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"/>

谁能告诉我如何避免修剪空间?任何帮助,将不胜感激。

问候, 尤维

4

2 回答 2

2

谁能告诉我如何避免修剪空间?

由于<Message Text="OK" /><Message Text="OK"/>是完全相同的 XML,因此对于正确的 XML 解析器应该没有区别。

如果由于某种原因它确实很重要(例如,您将此输出提供给一个非 XML 工具,没有空间就无法应付),那么您可以尝试支持 XSLT 2.0 的Saxon转换器实现。XSLT 2.0 提供了一种“xhtml”输出方法,您可以使用它来代替默认的“xml”,并且按照 XHTML 的 HTML 兼容性指南进行序列化。除其他外,这意味着它使用空格 ( <br />) 或以“扩展”形式 ( <example></example>) 写入所有空标签。

于 2013-09-23T12:31:10.483 回答
1

DOM 模型不提供在 XML 标记中表达额外空格的方法。它仅包含有关标签名称、属性及其值的信息。

从 XML 的角度来看,额外的空格并不重要 - 两种表示是相等的。

于 2013-09-23T12:19:40.673 回答