我有一个要解析到我的数据库的 XML,这个 XML 大小约为 10MB,它包含数百万个元素。
每 30-60 秒更新一次,但只有几个元素,而不是全部。
为了以最快的方式将其解析到数据库中,我开发了一个函数来删除 2 个 XML 文件中的重复元素,代码如下:
XDocument doc2 = XDocument.Parse(tempDoc.ToString());
var doc1 = new XDocument();
try
{
doc1 = XDocument.Load(bookieName + ".xml");
}
catch
{ }
try
{
var dict1 = doc1.Descendants("event").Select(el => el.ToString()).ToList();
var dict2 = doc1.Descendants("event").Select(el => el.ToString()).ToList();
foreach (var elem in dict1)
{
if (dict2.Contains(elem))
{
if (dict2.Find(x => x == elem).ToString() == dict1.Find(x => x == elem).ToString())
{
doc2.Descendants("event").Where(x => x.ToString() == elem).Remove();
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return doc2;
问题是,它适用于小型 XML 文件,但对于大型 XML 文件 (10MB),它需要 100% 的 CPU 2-5 分钟。
你知道我该如何改进它并让它变得更好吗?
我有点绝望。
谢谢!