gpt4 book ai didi

c# - 更有效地使用 XMLReader

转载 作者:行者123 更新时间:2023-11-30 21:08:19 26 4
gpt4 key购买 nike

我有以下代码:

    for (i = 1; i <= loopsNeeded; i++)
{
lblCurrent.Text = string.Format("{0} of {1}", i, loopsNeeded);
prgWriteProgress.Value = i;
this.Refresh();

reader = XmlReader.Create(FilePath);
outputFile = CreateXmlOutputFileName(xmlFileInfo);
FileStream stream = new FileStream(outputFile, FileMode.Create);

xslArg = new XsltArgumentList();
xslArg.AddParam("Index", "", currentNode);
xslArg.AddParam("BatchSize", "", batchSize);

transformation.Transform(reader, xslArg, stream);

currentNode+=batchSize;

stream.Flush();
stream.Close();
}

此代码运行一个 XML 文件,每次选择特定的一批信息,并逐步在文件中移动。

根据 MSDN:

XmlReader provides forward-only, read-only access to a stream of XML data.

这给我带来了需要在每个循环中重新定义 XML 读取器以确保它从文件顶部开始的问题。

测试给出了以下反馈:

125,000 information nodes/125,000 per batch file = 48 mins.  
125,000 information nodes/5000 per batch file = 58 mins.
125,000 information nodes/500 per batch file = 2 hours 33 mins.

如您所见,由于需要不断将 0.8gig 文件重新加载到 XMLReader,因此在运行较小的批处理时会产生严重的影响。

有没有办法避免每次都必须重新声明 XMLReader,从而减少我遇到的开销?

最佳答案

您可以使用 XDocument class .它提供了更好的 Xml 文档抽象。

var xDocument = XDocument.Load(filePath);
for (i = 0; i < loopsNeeded; i++)
{
...
var reader = xDocument.CreateReader();
...
}

关于c# - 更有效地使用 XMLReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com