我需要從不同的來源(函數)生成一個巨大的XML文件。我決定使用XmlTextWriter
,因爲它使用的內存少於XmlDocument
。內存流爲空
首先,開始與潛在MemoryStream
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(ms, new UTF8Encoding(false, false));
xmlWriter.Formatting = Formatting.Indented;
一個XmlWriter
然後我通過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);
不確定這是否有效。
非常感謝!
你應該改掉這個問題在2,然後將它們鏈接,如果他們是彼此相關 – 2011-05-25 20:35:37
請注意,將MemoryStream完全破壞了「我決定,因爲它使用較少的內存使用XmlTextWriter的」 – 2011-05-25 20:43:55
對於任何低於10 MB只使用XmlDocument或XDocument。爲了節省內存,請寫入FileStream。 – 2011-05-25 20:45:49