Мне нужно создать огромный XML-файл из разных источников (функций). Я решил использовать XmlTextWriter
, поскольку он использует меньше памяти, чем XmlDocument
.
Во-первых, инициируйте XmlWriter
с базовым MemoryStream
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(ms, new UTF8Encoding(false, false));
xmlWriter.Formatting = Formatting.Indented;
Затем я передаю XmlWriter
(заметьте, что XML Writer остается открытым до самого конца) функции для генерации начала XML-файла:
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement();
// xmlWriter.WriteEndElement(); // Do not write the end of root element in first function, to add more xml elements in following functions
xmlWriter.WriteEndDocument();
xmlWriter.Flush();
Но я обнаружил, что основной поток памяти пуст (путем преобразования байтового массива в строку и строку вывода). Есть идеи почему?
Кроме того, у меня есть общий вопрос о том, как создать огромный XML-файл из разных источников (функций). Что я делаю сейчас, так это оставляю XmlWriter
открытым (я предполагаю, что основной поток памяти должен также открыться) для каждой функции и записи. В первой функции я не пишу конец корневого элемента. После последней функции я вручную добавляю конец корневого элемента следующим образом:
string endRoot = "</Root>";
byte[] byteEndRoot = Encoding.ASCII.GetBytes(endRoot);
ms.Write(byteEndRoot, 0, byteEndRoot.Length);
Не уверен, работает ли это или нет.
Большое спасибо!