【发布时间】:2014-12-17 23:25:44
【问题描述】:
最近将一个 3.5 的项目升级到 4.5。我们正在序列化并存储在数据库中的一大块数据,但是每次在升级后的项目中进行保存时,XML 格式都会发生变化,抛出错误,我似乎无法弄清楚核心问题。有 2 个特别提到编码更改的 SO 问题,但我尝试切换到 UTF8(以这些问题的答案中指定的几种不同方式),但没有任何成功 - 使用 UTF8,我只是得到了一堆奇怪的字符整个文件。
我看到的主要问题是:
- 领先?字符被添加到 XML 中(我发现它是一个有效字符,但我们显然没有处理)
- 某些节点不包含子节点。
这是我们的序列化方法:
public static string SerializeXml<T>(T instance)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
MemoryStream memStream = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(memStream, Encoding.Unicode);
serializer.Serialize(xmlWriter, instance);
memStream = (MemoryStream)xmlWriter.BaseStream;
return UnicodeEncoding.Unicode.GetString(memStream.ToArray()).Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", "");
}
以及我们的反序列化方法:
public static T DeserializeXml<T>(string xml)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
StringReader reader = new StringReader(xml);
return (T)xs.Deserialize(reader);
}
任何帮助将不胜感激,我对序列化或编码不太熟悉。只是好奇升级到 4.5 后可能发生了什么变化,或者我是否需要仔细研究一下。
【问题讨论】:
-
不序列化子节点的类是什么样子的?
标签: c# .net xml serialization