XML反序列化C#,换行符\n被替换为\\n。

11 浏览
0 Comments

XML反序列化C#,换行符\n被替换为\\n。

我正在尝试对一个简单的Xml文档进行反序列化。\n这是我的函数。\npublic class DataTry\n{\n public static string deserialize()\n {\n XmlSerializer deserializer = new XmlSerializer(typeof(Data));\n TextReader reader = new StreamReader(@\"D:\\myfile.xml\");\n object obj = deserializer.Deserialize(reader);\n Data XmlData = (Data)obj;\n reader.Close();\n return XmlData.somedata;\n }\n [Serializable, XmlRoot(\"data\")]\n public class Data\n {\n [XmlElement(\"somedata\")]\n public string somedata { get; set; }\n }\n}\n我得到的结果是Data1\\\\nData2\\\\n。\n我不想将换行符\\n替换为\\\\n。

0
0 Comments

问题原因:

该问题的原因是在进行XML反序列化时,换行符"\n"被替换为了字符串"\n"。在调试器中查看时,会以转义形式"\\"表示。

解决方法:

如果希望将"\n"转换为真正的换行符,可以使用正则表达式的反转义方法"Regex.Unescape"来实现。具体代码如下:

var escaped = @"Data1\nData2\n";        
var unescaped = Regex.Unescape(escaped);

上述代码将字符串"Data1\nData2\n"中的"\n"转义为真正的换行符。

需要注意的是,该方法本意是用于反转义正则表达式,因此还会反转义其他字符。如果需要了解更多选项,可以参考相关问题:https://stackoverflow.com/questions/2661169

最后,感谢您的帮助,这正是我所需要的解决方法。

0