我需要从不同的来源(函数)生成一个巨大的XML文件。我决定使用XmlTextWriter
,因为它比XmlDocument
使用更少的内存。
首先,使用底层的MemoryStream
初始化一个XmlWriter
。
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);
不确定这是否有效。
非常感谢!