XmlReader ReadString()删除' \ r'来自" \ r \ n"

时间:2015-04-23 18:56:20

标签: c# winforms xmlserializer xml-deserialization ixmlserializable

我有一个继承自IXmlSerializable的班级。我已正确覆盖ReadXmlWriteXml方法。

我正在使用XmlSerializer将对象序列化/反序列化为xml文件。

当我Serialize对象时,它正确地将\r\n写入文件。但是当我以同样的方式Deserialize对象时,\r已被删除,只有\n存在。我无法弄清楚它为什么会这样做。

2 个答案:

答案 0 :(得分:2)

它被称为规范化,并在XML specification

中明确定义
  

... XML处理器必须正常化换行符解析实体到#xA要么通过平移两个字符序列#xD #xA和任何#xD其后面没有#xA到#xA上输入解析之前, ...

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

答案 1 :(得分:0)

对于文本文件中的新行,仅处理'\n'是正常的。 DOS / Windows C库具有"文本模式"它透明地将CR-LF转换为LF并返回。