从流中读取 XML,提取节点,对其进行 base64 解码并写入所需内存最少的文件

Read XML from stream, extract node, base64 decode it and write to file with minimum internal memory required

我有一个 WebResponse.GetResponseStream 可以给我一个字符串(XML 文件)。现在我只需要 XML 中的一个节点来承载数据(好的,我也需要一些其他节点)。我现在可以将流保存为 XML 文件。之后我需要解析它,从节点中提取数据并将其另存为文件。然后我将 base64 解码这个文件并再次保存真实文件 .

对于所有这些,我想使用尽可能少的内存 (RAM)。即时执行所有操作会非常快速地减少较大文件的内存,并且还可能导致内存不足的问题。在我上面描述的想法中,我会编写多个文件来提取数据。这可以一步完成,以便只写入一个文件吗?尽管主要要求是尽可能提高内存 (RAM) 效率。也许只需要一个小缓冲区,但不需要将内存增加一倍或三倍。

使用 XMLReader

            string xml = "";  //put your string input here
            StringReader reader = new StringReader(xml);
            XmlReader xreader = XmlReader.Create(reader);
​

使用 XmlReader 是正确的...但您不想将它加载到 'string' 中来执行此操作。相反,XmlReader 被设计为可以很好地从流中读取。使用 XmlReader.Create(yourStream).