我寫常用功能序列化給定對象名單<對象>如下如何序列名單<object>
public string SerializeObject(Object pObject)// for given object
{
try
{
String XmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(pObject));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
catch (Exception e) { System.Console.WriteLine(e); return null; }
}
public string SerializeObject(List<Object> pObject)// for given List<object>
{
try
{
String XmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(pObject));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
catch (Exception e) { System.Console.WriteLine(e); return null; }
}
第一個是工作的罰款。如果我傳遞任何類型,它成功返回xml字符串。
更正:發生編譯錯誤的第二個(錯誤:無法從List<MyType>
轉換爲List<object>
我重寫了第二個如下解決了我的問題,現在它被序列化給定List<generic types>
private string SerializeObject<T>(T source)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, source);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
string XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
@afin:也許你沒有意識到,但你不應該再使用'new XmlTextWriter()'。它已被棄用,以支持'XmlWriter.Create()'。自.NET 2.0以來。 – 2010-04-21 01:01:52
@john:謝謝 – afin 2010-04-21 01:05:23
您可以查看Fasterflect(http://fasterflect.codeplex.com),其中包含對象的ToXml擴展方法。它只是單向的,所以可能不是你所需要的,但它幾乎適用於每一個對象。 – 2010-04-21 01:45:20