web-dev-qa-db-ja.com

XmlDocumentをarray <byte>に変換する方法は?

XmlDocument を作成し、今度はそれを配列に変換します。これをどのように行うことができますか?

ありがとう、

25
Newbie

以下を試してください:

using System.Text;
using System.Xml;

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

ドキュメントのテキストエンコーディングを保持する場合は、Defaultエンコーディングを目的のエンコーディングに変更するか、 Jon Skeetの提案 に従ってください。

46
Steve Guidi

それを 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)を使用できます。

28
Jon Skeet

スティーブグイディ :ありがとう!あなたのコードは正しかった!特殊文字の問題を解決した方法は次のとおりです。

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