I came across this blog post the other day which introduced to me a cool addition to the DataContract serializer – the ability to generate XML by reference rather than by value:
http://www.zamd.net/2008/05/20/DataContractSerializerAndIsReferenceProperty.aspx
Not much for me to add to it really, just read the blog to see how it works.