问题:在 .Net 中使用 XSL 转换大型 XML 文档 (>200MB) 的最佳方法是什么?
背景:我有一个为我提供大型数据文件的应用程序,我无法更改格式。在过去,我能够毫无问题地翻译较小的数据文件。
最初我将 XML 作为字符串使用,并且很快就耗尽了内存。我切换了我的代码,现在我处理 MemoryStream 的读取,使用样式表进行转换,然后使用文件流将输出的副本保存到单独的位置。
应用样式表会导致应用程序消耗超过 1gb 的内存并最终崩溃。
我知道我可以使用 DOM 以编程方式处理 XML,但我真的很想坚持应用 XSL 样式表的通用方法。
有没有人对我在处理 XSL 转换时如何更好地管理内存有任何指示?下面是我正在应用转换的代码片段:
'xmlData is a memory stream passed into a function
'...
Dim strfilepath As String = appConfigSettings.FilePaths.XslFilePath & "\" & odtrow.formatterXsl
Dim xslt As New System.Xml.Xsl.XslCompiledTransform()
xslt.Load(strfilepath)
Dim xmlRead As XmlReader = XmlReader.Create(xmlData)
newStream = New MemoryStream()
xslt.Transform(xmlRead, Nothing, newStream) 'here is where it fails
newStream.Position = 0
'...
C# 或 VB 示例都很好,我可以使用任何一个...这个应用程序是我的手,所以请不要批评 vb :) -J