DataContractSerializer vs XmlSerializer: Pros and Cons of each serializer

.NetSerialization

.Net Problem Overview


My desktop application serializes objects using XmlSerializer. I was suggested to leverage DataContractSerializer instead.
Under which scenarios should I use DataContractSerializer?

Many thanks

Comments.

  1. The output XML file is stored locally. No other applications deserialize objects from that XML file.
  2. My application runs with .NET Framework 3.5 SP1.

.Net Solutions


Solution 1 - .Net

Dan Rigsby has the ultimate post on this - go read it!

XmlSerializer vs. DataContractSerializer (web archive)

He says all there is to say, and in a very convincing way.

In short:

XmlSerializer:

  • has been around for a long time
  • is "opt-out"; everything public gets serialized, unless you tell it not to ([XmlIgnore])

DataContractSerializer is:

  • the new kid in town

  • optimized for speed (about 10% faster than XmlSerializer, typically)

  • "opt-in" - only stuff you specifically mark as [DataMember] will be serialized

  • but anything marked with [DataMember] will be serialized - whether it's public or private

  • doesn't support XML attributes (for speed reasons)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVitali ClimencoView Question on Stackoverflow
Solution 1 - .Netmarc_sView Answer on Stackoverflow