问题:在.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
答案 0 :(得分:1)
您正在使用MemoryStream,但内存不足。嗯...
也许使用FileStream?
答案 1 :(得分:0)
尝试使用XPathDocument而不是XMLReader。它经过优化并且速度更快。
d