【问题标题】:What is the best way to parse large XML (size of 1GB) in C#?在 C# 中解析大型 XML(大小为 1GB)的最佳方法是什么?
【发布时间】:2010-10-02 21:47:23
【问题描述】:

我有一个 1GB 的 XML 文件并且想要解析它。如果我使用 XML Textreader 或 XMLDocument,结果会很慢,有时会挂起...

【问题讨论】:

  • 那个无耻插入的网址有什么用?
  • 什么都没有,尤其是现在它已经消失了。

标签: c# xml parsing .net-2.0


【解决方案1】:

您必须使用 xmlreader 实现自定义逻辑。 xmlreader 在使用之前不会将完整的 XML 加载到内存中,这意味着您可以从流中读取它并按原样处理它。

【讨论】:

    【解决方案2】:

    XmlDocument 在这种情况下是不可行的,因为它会尝试将该千兆字节吸入主内存。我很惊讶您发现 XmlTextReader 太慢了。您是否尝试过类似以下的方法?

    using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt"))
    {
         // use rdr to advance through the document.
    }
    

    【讨论】:

      【解决方案3】:

      XMLTextreader 不应该挂起,因为它是基于流的并且只能处理数据块。

      如果它挂起,很可能是你在加载文件时做错了。

      【讨论】:

      • 它可能由于操作系统或文件系统级别的资源限制而挂起。
      【解决方案4】:

      我对这个主题不是很熟悉,但是 XmlReader 类应该可以很好地解决您的具体问题。毕竟,它们正是为此进行了优化。

      【讨论】:

        【解决方案5】:

        我只想通过我发现的性能比较来支持所有推广 XmlReader 的人:

        http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html

        【讨论】:

          猜你喜欢
          • 2010-10-15
          • 1970-01-01
          • 1970-01-01
          • 2010-10-28
          • 1970-01-01
          • 1970-01-01
          • 2019-05-03
          • 1970-01-01
          • 2020-03-14
          相关资源
          最近更新 更多