Use XDocument as the source for XmlSerializer.Deserialize?

Roman Starkov picture Roman Starkov · Aug 18, 2009 · Viewed 27k times · Source

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.

Answer

Steve Guidi picture Steve Guidi · Aug 18, 2009

You can use XDocument.CreateReader() to create an XmlReader that reads the contents of the XDocument.

Equivalently, the following will work too.

XmlReader GetReader(XDocument doc)
{
    return doc.Root.CreateReader();
}