gpt4 book ai didi

c# - 使用 C# 对大型 XML 文件进行 XSLT 转换

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:08 26 4
gpt4 key购买 nike

我有一些非常大的 XML 文件(800 MB 到 1.5 GB)。我需要对其应用 XSLT。我能够阅读它 XMLTextReader。当我应用 XSLT 转换时,出现 SystemOutOfMemory 异常。

我的代码看起来像;

static void Main(string[] args)
{
XDocument newTree = new XDocument();
XmlTextReader oReader = new XmlTextReader(@"C:\Projects\myxml.xml");


using (XmlWriter writer = newTree.CreateWriter())
{
XslCompiledTransform oTransform = new XslCompiledTransform();
oTransform.Load(@"C:\Projects\myXSLT.xsl");
oTransform.Transform(oReader, writer);
}
Console.WriteLine(newTree);
}

提前致谢。这是非常紧急的。如果我没有得到任何解决方案,我需要将 XML 拆分为更小的 XML 并进行转换。

最佳答案

XSLT 使用 XPath,这需要在内存中维护整个 XML 文档。 因此内存不足的问题是理所当然的

有一些简单的规则可以估计需要多少内存,其中之一是 5 * text-size

因此,对于“典型的 1.5GB XML 文件”,8GB RAM 可能就足够了。

要么将文档拆分成更小的部分,要么等待 XSLT 2.1 的实现,它定义了特殊的流指令。同时,可以使用最新(商业)版本的 Saxon,它实现了流式传输扩展,并且已在 Twitter 上报告了成功处理 64GB 文档的情况。

关于c# - 使用 C# 对大型 XML 文件进行 XSLT 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3101048/

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