Вопрос: Каков наилучший способ преобразования большого XML-документа (> 200 МБ) с использованием XSL в .Net?.Net Преобразование больших XML-документов с помощью XSL
Фон: У меня есть приложение, которое подает мне большие файлы данных, я не могу изменить формат. Раньше я мог переводить файлы меньшего размера без проблем.
Первоначально я работал с 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
Я пробовал с фильтром, но процесс длится 100 раз. Я пытался каким-то образом управлять memystream и разбирать XML одновременно. У меня есть пример рабочего потока. Даже при этом, когда вы применяете таблицу стилей XSL, она потребляет тонну памяти, но, по крайней мере, она не падает. – Jay
Принимая это, никогда не нашел другого варианта. Мне придется страдать с большим временем загрузки. – Jay