5 c# xmltextreader xml-parsing
是否有最佳实践从XML文档中获取元素数量以用于进度报告?我有一个2 GB的XML文件,其中包含我需要处理的航班,我的想法是首先获取文件中所有元素的数量,然后使用计数器显示x个x航班被导入我们的数据库.
对于文件处理,我们使用.NET(C#)中的XmlTextReader来获取数据,而无需将整个文档读入内存(类似于sax解析).
所以问题是,我怎样才能非常快速地得到这些元素的数量......是否有最佳实践,或者我应该首先阅读整个文档并编写类似i ++的内容; ?
谢谢!
你当然可以只阅读文档两次 - 一次只是简单地计算元素(继续使用XmlReader.ReadToFollowing,例如,或者可能ReadToNextSibling)随时增加一个计数器:
int count = 0;
while (reader.ReadToFollowing(name))
{
count++;
}
Run Code Online (Sandbox Code Playgroud)
但是,这确实意味着两次读取文件......
另一种方法是查找文件的长度,并在读取文件一次时,根据基础流的位置报告目前处理的文件的百分比.这将不太准确,但效率更高.您需要XmlReader直接从a 创建,Stream以便您可以继续检查位置.
int count = 0;
using (XmlReader xmlReader = new XmlTextReader(new StringReader(text)))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element &&
xmlReader.Name.Equals("Flight"))
count++;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5622 次 |
| 最近记录: |