Я построил XmlDocument, и теперь я хочу преобразовать его в массив. Как это может быть сделано?Как преобразовать XmlDocument в массив <byte>?
Спасибо,
Я построил XmlDocument, и теперь я хочу преобразовать его в массив. Как это может быть сделано?Как преобразовать XmlDocument в массив <byte>?
Спасибо,
Попробуйте следующее:
using System.Text;
using System.Xml;
XmlDocument dom = GetDocument()
byte[] bytes = Encoding.Default.GetBytes(dom.OuterXml);
Если вы хотите сохранить кодировку текста документа, а затем изменить Default
кодирования до нужной кодировки, или следовать Jon Skeet's suggestion.
записать его на 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)
.
Если вы собираетесь передавать MemoryStream в качестве входного сигнала для чего-то еще, не забудьте установить позицию обратно в ноль. doc.Save (мс); ms.Position = 0; – jhilden
Steve Guidi: Спасибо! Ваш код был прав на деньги! Вот как я решил выпуск своих специальных символов:
public static byte[] ConvertToBytes(XmlDocument doc)
{
Encoding encoding = Encoding.UTF8;
byte[] docAsBytes = encoding.GetBytes(doc.OuterXml);
return docAsBytes;
}
Краткий и ясный. Ницца. –
Это решение, которое я использовал до сих пор. Проблема заключается в том, что этот метод генерирует исключение OutOfMemoryException для больших XML-документов. :/ – sunside
Еще одна разница между ** dom.OuterXml ** и ** dom.Save ** заключается в том, что ** OuterXml ** имеет XML-данные в одной длинной строке без форматирования. ** Сохранить ** метод создает отформатированный XML-документ с отступом. – tibx