如何选择Xml序列化,DataContractSerializer和LINQ to XML来序列化简单对象树?

时间:2011-06-15 09:50:50

标签: .net xml xml-serialization linq-to-xml datacontractserializer

我需要将一个简单对象树序列化为XML文件 - 自从我上次不得不这样做以来世界已经发生了变化......

(我不关心XML的架构,如果需要,支持人员可以理解该文件)

那么在.net中选择不同的“easy xml”API时要考虑的权衡是什么?

2 个答案:

答案 0 :(得分:4)

这就是我考虑选项的方式:

LINQ to XML - 完全控制XML和对象的设计,是3个选项中任意一个的最多代码。

DataContractSerializer - 很少或根本无法控制XML,可以处理大多数对象

XmlSerializer - 完全控制XML,但您必须以Xml序列化喜欢的方式设计对象。

答案 1 :(得分:3)

DataContractSerializer不一定会发出“典型”xml,并且您无法控制输出。但是,如果需要,它确实支持完整图表。如果您需要xml,并且不需要完整图表,我会倾向于XmlSerializer - 它将避免编写任何代码来手动遍历数据(ala XmlDocument或{{1} }),但给你控制。

一个警告:XDocument对您的类型提出要求(公共,公共无参数构造函数,仅限于公共成员,没有序列化回调等)。它们通常不是问题。

但是,我可能会写二进制而不是xml; p(只是没有XmlSerializer,它有......扭结)。