【发布时间】:2009-06-22 15:23:04
【问题描述】:
我想知道如何使用 LINQ 流式传输非常大、深度嵌套的 XML 文档,在流式传输时,根据某些标准过滤节点,然后将流式输出写入文件,同时保持相同的原始结构的 XML。
这应该不会将整个文档加载到内存中。
这可能吗?
【问题讨论】:
我想知道如何使用 LINQ 流式传输非常大、深度嵌套的 XML 文档,在流式传输时,根据某些标准过滤节点,然后将流式输出写入文件,同时保持相同的原始结构的 XML。
这应该不会将整个文档加载到内存中。
这可能吗?
【问题讨论】:
LINQ to XML 不支持直接以流方式读取,但我已成功使用XmlReader,基于that 进行过滤,然后将其传递给XElement.Load当我发现我感兴趣的子树时。它假定子树足够小以适合内存。当Load 返回时,阅读器将被移出该子树,您可以继续前进,直到找到下一个相关的子树,等等。
有关更多信息和示例代码,请参阅this MSDN blog post。
(这是我对 Stack Overflow 数据转储所做的,顺便说一句 :)
【讨论】:
【讨论】:
有关 XML 流式处理选项,请查看 XML 团队关于使用 LINQ to XML 进行流式处理的讨论,该讨论以 http://blogs.msdn.com/xmlteam/archive/2007/03/05/streaming-with-linq-to-xml-part-1.aspx 开头。意识到这是一个早期的博客系列,在最终版本中对实现细节进行了一些更改。
【讨论】: