【问题标题】:Write dom4j Document to xml-file with escaped '\r\n\'使用转义的 '\r\n\' 将 dom4j 文档写入 xml 文件
【发布时间】:2010-02-12 14:20:28
【问题描述】:

很抱歉问了同样的问题,但现在我想:

编写一个包含如下标签的 dom4j 文档:

<Field>\r\n some text</Field>

到 xml 文件,但 \r\n 应转义为 &amp;#13;&amp;#10;

org.dom4j.Document.asXml()

不工作。

【问题讨论】:

    标签: java xml dom4j


    【解决方案1】:

    假设您的意思是文本节点中的 CRLF 序列(而不仅仅是文字反斜杠-r-反斜杠-n),您将无法说服 XML 序列化程序将它们写为 &amp;#13;&amp;#10;,因为 XML说你不必。该文档在 XML 术语中是绝对等价的,无论您是否对其进行转义。您需要将 CRLF 序列转义为 &amp;#13;&amp;#10; 的唯一位置是在属性值中。

    如果您确实必须生成此输出,则必须编写自己的 XML 序列化程序,该序列化程序遵循特殊规则来转义控制代码。但是,如果您这样做是因为外部工具无法读取包含 CRLF 序列的 XML 元素,则您应该专注于修复该工具,因为如果它无法处理文本内容中的换行符,那么它就会损坏并且不是正确的 XML 解析器.

    【讨论】:

    • 这不是关于转义,而是关于文本长度。作为字符串,文本长度为 2048,但在将其写入 xml 后突然变为 2182。我只是认为它与转义有关
    【解决方案2】:

    遍历树,将 String.replace 应用于 Text 节点。

    【讨论】:

    • 不让你插入真正的CRLF吗?
    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多