さまざまなソース (関数) から巨大な xml ファイルを生成する必要があります。XmlTextWriter
よりもメモリ使用量が少ないため、使用することにしましXmlDocument
た。
まず、XmlWriter
基礎となるMemoryStream
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(ms, new UTF8Encoding(false, false));
xmlWriter.Formatting = Formatting.Indented;
次にXmlWriter
、XML ファイルの先頭を生成する関数に (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);
これが機能するかどうかはわかりません。
どうもありがとう!