是否有从 XML 文档中获取元素数量以用于进度报告目的的最佳实践? 我有一个 2 GB 的 XML 文件,其中包含我需要处理的航类,我的想法是首先获取文件中所有元素的数量,然后使用计数器显示 x 个航类中的 x 个已导入我们的数据库。
对于文件处理,我们使用 .NET (C#) 中的 XmlTextReader 来获取数据,而无需将整个文档读入内存(类似于 sax 解析)。
所以问题是,我怎样才能非常快速地获得这些元素的数量...是否有最佳实践,或者我应该先浏览整个文档并执行类似 i++ 的操作; ?
谢谢!
最佳答案
您当然可以只阅读文档两次 - 一次只是对元素进行计数(例如,继续使用 XmlReader.ReadToFollowing
,(或者可能是 ReadToNextSibling
)增加一个计数器作为你去:
int count = 0;
while (reader.ReadToFollowing(name))
{
count++;
}
但是,这确实意味着读取文件两次...
另一种方法是找到文件的长度,当你通读文件一次时,根据底层流的位置。这将不太准确,但效率更高。您需要直接从 Stream
创建 XmlReader
,这样您就可以继续检查位置。
关于c# - 获取xml文档中元素数量的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991256/