代码之家  ›  专栏  ›  技术社区  ›  Jay

.Net使用XSL转换大型XML文档

  •  2
  • Jay  · 技术社区  · 16 年前

    背景: 我有一个应用程序,为我提供大数据文件,我不能更改格式。在过去,我能够翻译较小的数据文件,没有任何问题。

    应用样式表会导致应用程序消耗超过1gb的内存,并最终崩溃。

    我知道我可以使用DOM以编程方式处理XML,但我真的希望使用一种应用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:)

    2 回复  |  直到 15 年前
        1
  •  1
  •   John Saunders    16 年前

    您正在使用MemoryStream,内存不足。六羟甲基三聚氰胺六甲醚。。。

    也许用文件流代替?

        2
  •  0
  •   Dipesh    15 年前

    尝试使用XPathDocument而不是XMLReader。它经过优化,速度更快。