Вопрос: Каков наилучший способ преобразования большого документа XML (> 200 МБ) с использованием XSL в .Net?
Справочная информация:
У меня есть приложение, которое передает мне большие файлы данных, я не могу изменить формат. В прошлом мне удавалось переводить небольшие файлы данных без проблем.
Изначально я работал с XML в виде строк и очень быстро исчерпывал память. Я переключил свой код и теперь имею дело с MemoryStream для чтения, преобразования с использованием таблицы стилей, а затем сохранения копии выходных данных в отдельном месте с использованием файловых потоков.
Применение таблицы стилей приводит к тому, что приложение потребляет более 1 ГБ памяти и в конечном итоге происходит сбой.
Я знаю, что мог бы программно обрабатывать XML с использованием DOM, но я действительно хотел бы придерживаться универсального метода применения таблицы стилей 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