如何将XmlDocument转换为数组<byte>?

New*_*bie 26 .net c# xml bytearray

我构建了一个XmlDocument,现在我想将它转换为数组.如何才能做到这一点?

谢谢,

Ste*_*idi 47

请尝试以下方法:

using System.Text;
using System.Xml;

XmlDocument dom = GetDocument()
byte[] bytes = Encoding.Default.GetBytes(dom.OuterXml);
Run Code Online (Sandbox Code Playgroud)

如果要保留文档的文本编码,请将编码更改Default为所需的编码,或遵循Jon Skeet的建议.

  • 这是我到目前为止使用的解决方案.问题是这个抛出了大型XML文档的OutOfMemoryException.:/ (5认同)

Jon*_*eet 28

将其写入a MemoryStream然后调用ToArray流:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

要更好地控制格式,可以XmlWriter从流中创建并使用XmlDocument.WriteTo(writer).