J'ai construit un XmlDocument et maintenant je veux le convertir en un tableau. Comment cela peut-il être fait?
Merci,
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 .
É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)
.
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;
}