XmlReader ReadString() 从“\r\n”中删除“\r”

XmlReader ReadString() removes '\r' from "\r\n"

我有一个 class 继承自 IXmlSerializable。我已经正确地覆盖了 ReadXmlWriteXml 方法。

我正在使用 XmlSerializer 将对象 Serialize/Deserialize 写入 xml 文件。

当我 Serialize 对象时,它正确地将 \r\n 写入文件。但是当我以相同的方式 Deserialize 对象时, \r 已被删除,只有 \n 存在。我不明白为什么要这样做。

文本文件换行只处理'\n'是正常的。 DOS/Windows C 库有 "text mode" 透明地将 CR-LF 转换为 LF 并返回。

它被称为标准化并在 XML specification

中明确定义

... an XML processor must normalize line breaks in parsed entities to #xA either by translating the two-character sequence #xD #xA and any #xD that is not followed by #xA to #xA on input before parsing, ...

可以通过 XmlTextReader.Normalization 禁用一些规范化。