xml - XML 规范是否规定解析器需要始终将\n\r 转换为\n,即使\n\r 出现在 CDATA 部分中?

标签 xml newline special-characters cdata specifications

我在处理 xml 中的\line-feed 和\carriage-return 字符时遇到了问题。 我知道,根据http://www.w3.org/TR/REC-xml/#sec-line-ends ,xml 处理器需要将任何“\n\r”或单独的“\r”序列替换为“\n”。
规范规定这必须是处理任何“外部解析实体”的行为,这是否也适用于元素内部的 CDATA 部分?
谢谢,

米歇尔

我确信 msxml 库会将每个\n\r"或单独的 "\r"序列转换为 "\n",无论它们是否在 cdata 部分中。

最佳答案

我将引用您链接到的部分中的一句话(强调我的):

To simplify the tasks of applications, the XML processor must behave as if it normalized all line breaks in external parsed entities (including the document entity) on input, before parsing, by translating both the two-character sequence #xD #xA and any #xD that is not followed by #xA to a single #xA character.

因为 XML 处理器在解析之前执行此操作,所以它还不知道文档的哪些部分是 CDATA 部分。因此,无论字符是否在 CDATA 部分中,它都会进行替换。

为了可靠地保留这些字符,必须将它们作为 实体写入 XML 文档。

关于xml - XML 规范是否规定解析器需要始终将\n\r 转换为\n,即使\n\r 出现在 CDATA 部分中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2817378/

相关文章:

python - 如何在 python 中使用 readlines 仅在回车时拆分?

德尔福 (2006) : how to Split by new line and break at the same time

python - 下载以特殊字符命名的在线 PDF 文件

Android 设置可见性不起作用

Android 在使用 cardview 图像时加载非常懒惰

java - 在 Android 中使用 POST 方法发送参数

java - 字符串数组和 BufferedReader

objective-c - NSXMLParser 无法解析特殊字符(德语和法语)

python - 将 html 实体转换为 python 中的值

C# System.Xml.Serialization - 仅使用 <a></a> 而从不使用 <a/>