可能重复:
XML 回车编码
我有一个类,上面有一些简单的字符串和 int 值,我正在使用 XmlSerializer 序列化到这样的文件。(这实际上是我正在使用的代码)
XmlSerializer xmlser = new XmlSerializer(typeof(NPC));
using (Stream st = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
xmlser.Serialize(st, npc);
}
一切正常;我已经验证,在序列化时,正确的数据在<Other></Other>
元素中的文件中\r\n
,如果我在文件中输入了这样的数据,则完整。问题来自反序列化(再次;字面意思是我正在使用的代码,除了失败时的“测试”结果)
XmlSerializer xmlser = new XmlSerializer(typeof(NPC));
NPC npc = null;
using (Stream st = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
{
npc = (NPC)xmlser.Deserialize(st);
}
//Testing...
if(!npc.Other.Contains("\r\n"))
{
//this always occurs, even when the <Other></Other> item DOES have CR-LF
}
反序列化后,string
对象上具有\r\n
值的属性将立即替换为\n
单独的。即使在反序列化文件反映\r\n
在正确的元素中之后,我也已经验证过,并且npc
在测试\r
删除之前我没有对对象做任何其他事情。
NPC 是一个简单的类,定义如下:
[Serializable]
public class NPC
{
public int Field1{get; set;}
public string Other {get; set;}
public int Etc... {get; set;}
}
所以; 为什么我的财产在反序列化时会Other
丢失?\r
\r\n