我的对象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/

10-12 13:29