The XmlSerializer included in the .Net Fx, has been one of my favorite's. We've suffered too much with the COM (MSXML) approach to OO/XML mappings.

We could classify the use of the XmlSerialization in different steps.

1 You don't know how to use Xml with .Net, so you write your own serializers, code generators and so on

2 You start looking at ADO.Net and the DataSet Model.

3 You don't like the DataSet neither typed or untyped, because there are features you don't need

3.5 Some people returns to point 1, however I would recommend: "Maybe it's not the best mapper in the world, but it's covered by the design time tools, and it works reasonably well, wait to have a solid justification to invert in more technology"

4 You start looking deeply to System.Xml namespace, and find XSD.exe as a choice to map XSD<->CLR

5 Once you see the simplistic limitations of XSD.exe you want a better model to generate your entities, there are a number of tools to do this job. http://apps.gotdotnet.com/xmltools/xsdobjgen/default.htm

6 You want to cutomize the code generation using the internals of the serializer: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxmlnet/html/xsdcodegen.asp