How to convert an XmlDocument to an array?

前端 未结 3 1406
别跟我提以往
别跟我提以往 2020-12-14 06:59

I constructed an XmlDocument and now I want to convert it to an array. How can this be done?

Thanks,

相关标签:
3条回答
  • 2020-12-14 07:20

    Steve Guidi: Thanks! Your code was right on the money! Here's how I solved my special characters issue:

        public static byte[] ConvertToBytes(XmlDocument doc)
        {
            Encoding encoding = Encoding.UTF8;
            byte[] docAsBytes = encoding.GetBytes(doc.OuterXml);
            return docAsBytes;
        } 
    
    0 讨论(0)
  • 2020-12-14 07:27

    Try the following:

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

    If you want to preserve the text encoding of the document, then change the Default encoding to the desired encoding, or follow Jon Skeet's suggestion.

    0 讨论(0)
  • Write it to a MemoryStream and then call ToArray on the stream:

    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));
        }
    }
    

    For more control over the formatting, you can create an XmlWriter from the stream and use XmlDocument.WriteTo(writer).

    0 讨论(0)
提交回复
热议问题