在 C# 中解析大型 XML(大小为 1GB)的最佳方法是什么?

发布于 2024-07-13 08:50:18 字数 88 浏览 4 评论 0原文

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

I have a 1GB XML file and want to parse it. If I use XML Textreader or XMLDocument, the result is very slow and some times it hangs...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

流云如水 2024-07-20 08:50:18

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

You'll have to implement custom logic using xmlreader. xmlreader does not load the full XML into memory before using it, which means you can read it from a stream and process it as such.

嗫嚅 2024-07-20 08:50:18

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

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

XmlDocument is not feasible in this scenario as it will attempt to suck that gigabyte into main memory. I'm surprised that you're finding XmlTextReader to be too slow. Have you tried something like the following?

using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt"))
{
     // use rdr to advance through the document.
}
陌伤ぢ 2024-07-20 08:50:18

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

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

XMLTextreader isn't supposed to hang as it's stream based and just works on chunks of the data.

If it hangs, it may well be that you are doing something wrong when loading the file.

ゃ人海孤独症 2024-07-20 08:50:18

我对这个主题不太熟悉,但据我所知,XmlReader 类应该可以很好地解决您的特定问题。 毕竟,它们正是针对这一点进行了优化。

I'm not very familiar with this topic, but afaik the XmlReader-classes ought to work fine for your specific problem. They are, after all, optimized for exactly this.

笑脸一如从前 2024-07-20 08:50:18

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

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

I would just like to back up everyone who promotes XmlReader with a performance comparison that I found:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文