开发者

How do I choose between Xml serialization, DataContractSerializer and LINQ to XML for serializing a tree of simple objects?

I need to serialize a tree of simple objects as XML to/from a file – the world has changed since I last had to do this…

(I don’t care about the schema of the XML provided a support person can underst开发者_开发百科and the file if needed)

So what are the trade off to consider when choosing between the different “easy xml” APIs in .net?


This is how I have come to think about the options:

LINQ to XML – full control over the XML and the design of the objects, the most code of any of the 3 options.

DataContractSerializer – little or no control over the XML, can cope with most objects

XmlSerializer – full control over the XML, but you must design the objects in a way that Xml Serialization likes.


DataContractSerializer doesn't necessarily emit "typical" xml, and you don't have much control over the output. It does, however, support full-graphs if you need. If you want xml, and don't need full-graphs, I would tend towards XmlSerializer - it'll avoid having to write any code for manually traversing the data (ala XmlDocument or XDocument), yet give you control.

One caveat: XmlSerializer places demands on your type (public, public parameterless constructor, limited to public members, no serialization callbacks, etc). They are usually not a problem.

But then, I'd probably be writing binary instead of xml anyway ;p (just not with BinaryFormatter, which has.... kinks).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜