我的对象template
从手工制作的XML文件中反序列化,包含混合类型,文本可以包含行跳转。当我查看文本时,可以看到行跳转为\r\n
,但是在反序列化的template
对象中,行跳转为\n
。如何保持跳线为\r\n
?
XmlReaderSettings settings = new XmlReaderSettings();
settings.CloseInput = true;
//settings.ValidationEventHandler += ValidationEventHandler;
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(schema);
StringReader r = new StringReader(syntaxEdit.Text);
Schema.template rawTemplate = null;
using (XmlReader validatingReader = XmlReader.Create(r, settings))
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(Schema.template));
rawTemplate = serializer.Deserialize(validatingReader) as Schema.template;
}
catch (Exception ex)
{
rawTemplate = null;
string floro = ex.Message + (null != ex.InnerException ? ":\n" + ex.InnerException.Message : "");
MessageBox.Show(floro);
}
}
最佳答案
看来这是XML规范所必需的行为,并且是Microsoft XmlReader(see this answer)实现中的“功能”。
您可能最容易做的就是将结果中的\n
替换为\r\n
。
关于c# - 为什么反序列化时XmlReader/XmlSerializer弄乱了文本中的行跳?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7374609/