可回滚的XML阅读器

时间:2011-11-13 17:01:34

标签: c# .net

我已经检查了Google并且相对空洞。在我开始编写自己的XML解析器之前,我想我会在这里问:我正在寻找一种低资源,快速,可重新缓存(或仅向后,非缓存)的XML-Reader。由于我正在使用的一些数据结构,.NET附带的前向XMLReader将花费大量的时间/资源来进行我想要的解析,并且使用XMLDocument将整个文档加载到内存中最终会破坏机器。

那么,有没有人知道如何让XMLReader从元素到元素向后搜索(没有一些疯狂的开销)?或者有没有人知道一个向后寻求的XML阅读器?或者我应该只写自己的读者?

谢谢, -R

2 个答案:

答案 0 :(得分:2)

  

文件大小可能会在不久的将来突破40 GB的障碍

XML不适合您尝试做的事情。数据库处理如此大量的数据会更有效。您应该将XML中的数据加载到数据库中,然后您可以处理该数据库。

答案 1 :(得分:0)

您总是可以尝试使用DataSet.ReadXML()将XML文件加载到DataSet对象中。它适用于许多格式干净的XML文件(大小不到1GB)。然后,您可以使用DataTable.Select语法在DataSet内的DataTables中搜索数据。

如果您有一个示例XML文件,您可以尝试使用我创建的玩具应用程序加载它,将XML加载到DataSet中并在网格中显示DataTables以进行编辑:http://www.dot-dash-dot.com/files/WTFXMLSetup_1_9_0.msi。这将显示您的XML是否完全适合DataSet。

显然,正如我在评论中所指出的那样,使用任何工具处理XML时,40GB太大了 - 它应该在数据库中。

该项目的来源是:http://www.dot-dash-dot.com/files/wtfxml.zip

对于每个人投票,请注意事件的时间表:

5 hours ago - asked (with no size criteria) and initially answered as above
4 hours ago - size criteria mentioned
4 hours ago - My comment: too big for XML, use a database