Use XDocument as the source for XmlSerializer.Deserialize?

Viewed 31063

I would like to invoke XmlSerializer.Deserialize passing it an XDocument. It can take a Stream, an XmlReader or a TextReader.

Can I generate one of the above from XDocument without actually dumping the XDocument into some intermediate store, such as a MemoryStream?

It seems that what I'm after is an implementation of XmlReader that works with an XDocument. I can't find one though.

5 Answers

Just thought I should add that after the XmlReader is created, i.e.:

XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
XmlReader reader = xmlDocumentToDeserialize.CreateReader();

then you should call:

reader.MoveToContent();

because otherwise the reader will not "point" to the first node, causing the appearance of an empty reader! Then you can safely call Deserialize:

MyObject myObject = (MyObject)serializer.Deserialize(reader);
Related