【发布时间】:2011-10-16 07:48:56
【问题描述】:
我正在使用这种方法将对象转换为 XML:
protected XmlDocument SerializeAnObject(object obj)
{
XmlDocument doc = new XmlDocument();
DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
MemoryStream stream = new MemoryStream();
try
{
serializer.WriteObject(stream, obj);
stream.Position = 0;
doc.Load(stream);
return doc;
}
finally
{
stream.Close();
stream.Dispose();
}
}
最终我得到了类似的东西:
<CaCT>
<CTC i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/a.b.BusinessEntities.InnerEntities" />
<CTDescr xmlns="http://schemas.datacontract.org/2004/07/a.b.BusinessEntities.InnerEntities">blabla</CTDescr>
<CaId>464</CaId>
</CaCT>
我怎样才能摆脱i:nil="true" 和xmlns="http://schemas.datacontract.org/2004/07/a.b.BusinessEntities.InnerEntities"?
【问题讨论】:
-
答:对象是什么?如果我们看不到它,我们如何提供帮助? B:对于细粒度的 XML 控件,XmlSerializer 一般优于 DataContractSerializer
-
@Marc Gravell:但是 XmlSerializer 不知道如何处理像 IEnumerable 这样的接口。
-
如果我必须比较两者的特性,与无法控制属性相比,缺少 IEnumerable(很容易被列表等绕过)将显得微不足道。
标签: c# .net xml serialization xml-serialization