【问题标题】:XML Carriage return encodingXML 回车编码
【发布时间】:2018-01-11 19:10:52
【问题描述】:

我希望在 xml 节点中表示回车。
我尝试了一个空白保留,十六进制实体,但没有运气- 和。通过浏览器查看。

例子

<Quote>
Alas, poor Yorick!
I knew him
</Quote>

谢谢。

【问题讨论】:

    标签: xml encoding whitespace


    【解决方案1】:

    要将CR插入XML,需要使用其字符实体&amp;#13;

    这是因为兼容的 XML 解析器必须在解析之前将 CRLF 和任何没有跟随 LF 的 CR 转换为单个 LF。此行为在 XML 1.0 规范的 End-of-Line handling 部分中定义。

    【讨论】:

    • 次要点 - CR 是 而不是 这是 LF - 有关详细信息,请参阅此 ascii 表 ...asciitable.com ...
    • 是的, 是 LF, 是 CR。 Windows 世界通常有 CRLF 序列(即 ),Linux 只有 LF( )。
    • 我无法让它以十进制工作,但它在十六进制 A; 中很好
    • 天啊,非常感谢!因此我的测试失败了......:D
    • @MikeF 这不是无效的字符实体because it isn’t decimal吗?您确定要将其提供给 XML 解析器吗?
    【解决方案2】:

    xml:space="preserve" 必须适用于所有兼容的 XML 解析器。

    但是,请注意,在 HTML 中,换行符只是空格而不是换行符(这用 &lt;br /&gt; (X)HTML 标记表示,也许这就是您面临的问题。

    您还可以添加 &amp;#10; 和/或 &amp;#13; 以插入 CR/LF 字符。

    【讨论】:

    • 为了记录,PC上的序列至少通常是CR 其次是 LF 但是现在,一个 LF 通常就足够了。
    • 还要注意,即使使用xml:space="prserve",XML 解析器仍然是required to replace 13 10 (and other sequences) with 10 before parsing。您可以输入一个 CR,该 CR 旨在通过 using a character entity reference such as &amp;#xD 进行解析。
    • @binki 为什么你对 xD == 13 没问题,但对 xA == 10 没问题?
    • @MikeF 永远不需要将10/0xa 编码为字符实体。 XML 可以作为文本复制/粘贴到不同的系统。如果您这样做,在某些系统上,换行符将是 CRLF,而在其他系统上,换行符将是 LF,或者在其他系统上是另一个字符。因此,XML 规范规定处理器应将不同类型的换行符标准化为10/0xa,以确保作为文本传输的 XML总是被解析为相同的确切值。因此,您只需要实体化非10 字符,包括 CR (U+13)、CR、NEL (U+13 U+85) 以及 W3C 链接中列出的其他字符。如果我误解了您的问题,请告诉我。
    【解决方案3】:

    浏览器不会可靠地向您显示空白。我建议使用 Linux 'od' 命令来查看其中的真正内容。兼容 XML 解析器将尊重您列出的所有方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多