XMLDocument -> Byte[] ... how to get back to XMLDocument?

jkh picture jkh · Jul 7, 2011 · Viewed 8.8k times · Source

I have an XmlDocument and get the bytes of the object as follows:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("C:\\myxml.xml");

byte[] data = Encoding.UTF8.GetBytes(xmlDocument.outerXml);

and data is stored in a database.

Now I am reading the byte[] data back out, and want to get back to the XmlDocument object. How can I do this, as I cannot simply case the byte[] to an XmlDocument?

Thanks.

Answer

Darin Dimitrov picture Darin Dimitrov · Jul 7, 2011

You could use the LoadXml method:

byte[] data = ... fetch from your db
string xml = Encoding.UTF8.GetString(data);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
// TODO: do something with the resulting XmlDocument

UPDATE:

As requested in the comments section here's how to load the byte array into a DataTable:

byte[] data = ... fetch from your db
DataTable dt = ... fetch from somewhere or instantiate a new;
using (var stream = new MemoryStream(data))
{
    dt.ReadXml(stream);
}