Но скрипту импорта периодически не хватает памяти, чтобы загрузить всё. И падает с ошибкой. Было решено "разбивать" файлы на части по 1000 товаров. И загружать последовательно.
Решение:
Directory.EnumerateFiles(Environment.CurrentDirectory)
.Where(file => Path.GetFileName(file).StartsWith("output")).ToList()
.ForEach(File.Delete);
XDocument source = XDocument.Load("import.xml");
int iteration = 0;
while (iteration * 1000 < source.Descendants("Товар").Count())
{
XDocument xdoc = new XDocument(source);
var allElements = xdoc.Descendants("Товар").OrderBy(a => a.Element("Ид")?.Value);
var whatToLeave = xdoc
.Descendants("Товар")
.OrderBy(w => w.Element("Ид")?.Value)
.Skip(1000 * iteration).Take(1000);
allElements.Except(whatToLeave).ToList().ForEach(e => e.Remove());
iteration++;
xdoc.Save($"output{iteration}.xml");
}
Комментариев нет:
Отправить комментарий