Ich baute eine XmlDocument und jetzt möchte ich es in ein Array konvertieren. Wie kann das gemacht werden?Wie konvertiert man ein XmlDocument in ein Array <byte>?
Danke,
Ich baute eine XmlDocument und jetzt möchte ich es in ein Array konvertieren. Wie kann das gemacht werden?Wie konvertiert man ein XmlDocument in ein Array <byte>?
Danke,
Versuchen Sie Folgendes:
using System.Text;
using System.Xml;
XmlDocument dom = GetDocument()
byte[] bytes = Encoding.Default.GetBytes(dom.OuterXml);
Wenn Sie den Text Codierung des Dokuments beibehalten möchten, dann ändern Sie die Default
Codierung auf die gewünschte Codierung oder Jon Skeet's suggestion folgen.
es Schreibe einen MemoryStream
und dann ToArray
auf dem Strom nennen:
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));
}
}
Für mehr Kontrolle über die Formatierung, erhalten Sie einen XmlWriter
aus dem Stream erstellen und XmlDocument.WriteTo(writer)
verwenden.
Wenn Sie den MemoryStream als Eingabe an etwas anderes übergeben werden, denken Sie daran, die Position wieder auf Null zu setzen. doc.Save (ms); ms.Position = 0; – jhilden
Steve Guidi: Danke! Dein Code war richtig auf dem Geld! Hier ist, wie ich mein Sonderzeichen Problem gelöst habe:
Prägnant und klar. Nett. –
Dies ist die Lösung, die ich bis jetzt verwendet habe. Das Problem ist, dass dieses eine OutOfMemoryException für große XML-Dokumente auslöst. :/ – sunside
Ein weiterer Unterschied zwischen ** dom.OuterXml ** und ** dom.Save ** ist, dass ** OuterXml ** XML-Daten in einer langen Zeile ohne Formatierung enthält. ** Save ** -Methode erzeugt formatiertes XML-Dokument mit Einrückung. – tibx