How to convert an XmlDocument to an array<byte>? How to convert an XmlDocument to an array<byte>? arrays arrays

How to convert an XmlDocument to an array<byte>?


Try the following:

using System.Text;using System.Xml;XmlDocument dom = GetDocument()byte[] bytes = Encoding.Default.GetBytes(dom.OuterXml);

If you want to preserve the text encoding of the document, then change the Default encoding to the desired encoding, or follow Jon Skeet's suggestion.


Write it to a MemoryStream and then call ToArray on the stream:

using System;using System.IO;using System.Text;using System.Xml;class Test{    static void Main(string[] args)    {        XmlDocument doc = new XmlDocument();        XmlElement root = doc.CreateElement("root");        XmlElement element = doc.CreateElement("child");        root.AppendChild(element);        doc.AppendChild(root);        MemoryStream ms = new MemoryStream();        doc.Save(ms);        byte[] bytes = ms.ToArray();        Console.WriteLine(Encoding.UTF8.GetString(bytes));    }}

For more control over the formatting, you can create an XmlWriter from the stream and use XmlDocument.WriteTo(writer).


Steve Guidi: Thanks! Your code was right on the money! Here's how I solved my special characters issue:

    public static byte[] ConvertToBytes(XmlDocument doc)    {        Encoding encoding = Encoding.UTF8;        byte[] docAsBytes = encoding.GetBytes(doc.OuterXml);        return docAsBytes;    }