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

时间:2009-09-30 19:41:27

标签: c# .net xml bytearray

我构建了XmlDocument,现在我想将其转换为数组。怎么办呢?

谢谢,

3 个答案:

答案 0 :(得分:44)

尝试以下方法:

using System.Text;
using System.Xml;

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

如果您想保留文档的文本编码,请将Default编码更改为所需的编码,或按照Jon Skeet's suggestion

答案 1 :(得分:28)

将其写入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));
    }
}

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

答案 2 :(得分:0)

Steve Guidi:谢谢!你的代码是对的钱!以下是我解决特殊字符问题的方法:

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