【发布时间】:2016-08-25 19:35:08
【问题描述】:
我必须解析 80 GB 的 XML 才能从该文件中获取一些数据。为此,我使用了 XML 阅读器。当我使用 304 MB 文件检查代码时。然后它在 4 秒内解析文件。所以我想我会为 80 GB 工作。但它在几分钟后给了我异常的记忆。
我有以下代码:
static void Main(string[] args)
{
List<Test> lstTest = new List<Test>();
bool isTitle = false;
bool isText = false;
using (XmlReader Reader = XmlReader.Create(FilePath))
{
Test tt = new Test();
while (Reader.Read())
{ switch (Reader.NodeType)
{
case XmlNodeType.Element:
if (Reader.Name == "title")
{
isTitle = true;
}
if (Reader.Name == "text")
{
isText = true;
}
break;
case XmlNodeType.Text:
if (isTitle)
{
tt.Title = Reader.Value;
isTitle = false;
}
if (isText)
{
tt.Text = Reader.Value;
isText = false;
}
break;
}
if (tt.Text != null)
{
lstTest.Add(tt);
tt = new Test();
}
}
}
}
}
}
所以请建议。感谢您的帮助。
【问题讨论】:
-
您能否在每次迭代时检查
lstTest对象的大小。我可能是错的,但我认为lstTest变得太大以至于内存不足。
标签: c#