.NET 1.1中的XMLTextReader

时间:2008-10-02 12:59:52

标签: .net xml .net-1.1 xmltextreader

我有一个读取XML文件的进程。它使用XMLTextReader类来执行此操作,因为它应该是一个快速,仅向前的XML解析器/读取器。

使用1兆字节的测试文件可以很好地工作,但在实时系统中处理12兆字节的文件时会完全停止。

除了编写自己的XML阅读器之外,还有其他解决方案吗?这不是世界末日,但如果可能,我更愿意使用可用的标准组件

6 个答案:

答案 0 :(得分:1)

SAXExpat过去非常好。 Expat是 XML解析器,几乎是一个参考实现。我记得用它来读取通过TCP连接发送的一些同步XML文件,有时真正的大文件(大约50mb)没有任何问题。那是在3。4年前,在.NET 1.1和真正糟糕的计算机上。

答案 1 :(得分:1)

如果问题出在XmlTextReader中,我会非常惊讶。

如果您花几分钟时间编写一个创建XmlTextReader的测试程序,只需使用Read()来读取文件中的每个节点,直到它到达文档的末尾,我打赌你会发现它放大你的12mb文件就像一把热刀通过黄油。如果我遇到这个问题,这是我第一次尝试。

因为一旦你消除了XmlTextReader作为问题的根源,你可以将注意力集中在实际导致它的地方 - 这很可能是处理你正在阅读的节点的代码,而不是代码读取节点。

答案 2 :(得分:0)

我过去曾遇到类似的表现问题。我追溯到尝试远程解决DTD /架构。你在做这个吗?尝试将XmlTextReader.XmlResolver设置为null。

答案 3 :(得分:0)

取决于你从读者那里得到的东西。您是将它放在XML DOM中,还是任何对象模型?无论您使用何种语言或图书馆,这都会造成很大的记忆。

也许它在1.1中存在缺陷,想到试用2.0?我在1.1天内从未使用过XmlTextReader,所以我无法保证:但是从2.0开始它就是完美的。

答案 4 :(得分:0)

只想一想。您是否在整个过程中打开数据库事务?如果是这样,请在没有交易的情况下尝试,或至少在此过程中更频繁地提交。

答案 5 :(得分:0)

我讨厌推荐这个,但如果软件没有出售或外部,你可以尝试从Mono引入读卡器,看看是否能解决你的困境。