web-dev-qa-db-fra.com

Comment convertir un XmlDocument en un tableau <byte>?

J'ai construit un XmlDocument et maintenant je veux le convertir en un tableau. Comment cela peut-il être fait?

Merci,

25
Newbie

Essayez ce qui suit:

using System.Text;
using System.Xml;

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

Si vous souhaitez conserver l'encodage du texte du document, changez l'encodage Default en l'encodage souhaité, ou suivez suggestion de Jon Skeet .

46
Steve Guidi

Écrivez-le dans un MemoryStream puis appelez ToArray sur le flux:

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));
    }
}

Pour plus de contrôle sur la mise en forme, vous pouvez créer un XmlWriter à partir du flux et utiliser XmlDocument.WriteTo(writer).

28
Jon Skeet

Steve Guidi : Merci! Votre code était juste sur l'argent! Voici comment j'ai résolu mon problème de caractères spéciaux:

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