与可以执行任何操作的application/xml文件或将所有空白序列转换为单个空格字符的normalizedString值相反,我在这里特别询问具有字符串值的text/xml文件的上下文。为了简单起见,假设我仅将ASCII字符与UTF8编码文件一起使用。

给定以下两行文本字符串,我希望以XML表示:

Hello
World!

内存中的以下字节:
0000: 48 65 6c 6c 6f 0d 0a 57 6f 72 6c 64 21 Hello..World!

根据RFC 2046,任何文本/* MIME类型必须(不应)表示使用回车符和换行符字符序列的换行符。因此,以下XML片段应该是正确的:
<tag>Hello
World!</tag>

或者
0000: 3c 74 61 67 3c 48 65 6c 6c 6f 0d 0a 57 6f 72 6c <tag>Hello..Worl
0010: 64 21 3c 2f 74 61 67 3c                         d!</tag>

但是我经常看到如下文件:
<tag><![CDATA[Hello
World!]]></tag>

或者,甚至是陌生人:
<tag>Hello&xD;
World!</tag>

其中&0xD;序列后跟一个换行符:
0000: 3c 74 61 67 3c 48 65 6c 6c 6f 26 78 44 3b 0a 57 <tag>Hello&xD;.W
0010: 6f 72 6c 64 21 3c 2f 74 61 67 3c                orld!</tag>

我在这里想念什么?在XML字符串值中表示多行文本的正确方法是什么,以便它可以毫不费力地出现在另一端?

最佳答案

CR(&x0D;),LF(&x0A;),CRLF或其他几种组合均有效。如the spec中所述,所有这些都转换为单个&x0A;。特点。

关于xml - 在text/xml值中编码CR-LF换行符的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15016004/

10-11 23:11
查看更多