我在C#中编写了一个XML更换器,它比较了2个XML文件的值并使它们相等。我是以一种非常懒惰的方式完成的,因为我不知道文件之间会有什么样的差异。
以下是代码:
public static void ChangeNode(XDocument xdocument1, XDocument xdocument2, XElement bigNode1, XElement bigNode2)
{
if(bigNode1.Elements().ToList().Count < bigNode2.Elements().ToList().Count)
{
bigNode1.AddBeforeSelf(bigNode2);
bigNode1.Remove();
IsEqual = false;
}
else
{
if(bigNode1.Value != bigNode2.Value)
{
bigNode1.AddBeforeSelf(bigNode2);
bigNode1.Remove();
IsEqual = false;
}
}
if(!IsEqual)
{
xdocument1.Save(CoreForm.File1, SaveOptions.DisableFormatting);
xdocument2.Save(CoreForm.File2, SaveOptions.DisableFormatting);
}
}
将25MB文件更改为125MB文件时,如何才能使用近3GB的内存?它与我更改第一个文件的方式有关吗?
答案 0 :(得分:2)
无法看到你在这个方面做得怎么样可能会导致3gb的ram被使用。
但对于非常大的xml文件,不建议使用XDocument将其全部加载到内存中,而是使用XmlReader并以块的形式读取它。
另外this是关于提高xml性能的非常好的文章。