Question: What is the best way to transform a large XML document (>200MB) using XSL in .Net?
Background: I have a application that feeds me large data files, I cannot change the format. In the past I have been able to translate smaller data files with no issues.
Originally I was working with the XML as strings and was running out of memory very quickly. I switched my code and now I deal with MemoryStream's to read, transform using a stylesheet and then save off a copy of the output to a separate location using filestreams.
Applying of the stylesheet causes the application to consume upwards of 1gb memory and eventually crashes.
I know I could programatically process the XML using the DOM but I would really like to stick with a generic method of applying an XSL stylesheet.
Does anyone have any pointers on how I could better manage memory while processing the XSL transformation? Below is a snippet of code where i am applying the transformation:
'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# or VB examples are fine I can work with either...This app was a hand me down so not criticism for the vb please :) -J