Frage

Frage: Was ist der beste Weg, um ein großes XML-Dokument (> 200 MB) unter Verwendung von XSL in .NET

zu transformieren

Hintergrund: Ich habe eine Anwendung, die mir große Dateien Feeds, kann ich nicht das Format ändern. In der Vergangenheit konnte ich ohne Probleme kleinere Datendateien übersetzen.

Ursprünglich arbeitete ich mit dem XML als Strings und wurde sehr schnell aus dem Speicher ausgeführt wird. Ich schaltete meinen Code und jetzt beschäftige ich mich mit Memorystream zu lesen ist, zu verwandeln einen Stylesheet verwenden und dann eine Kopie der Ausgabe an einen separaten Ort mit Filestreams sparen.

des Stylesheets anwenden, wird die Anwendung nach oben von 1 GB Speicher zu verbrauchen und schließlich abstürzt.

Ich weiß, ich programmatisch die XML mit dem DOM verarbeiten könnte, aber ich würde wirklich mit einer generischen Methode halten wie einen XSL-Stylesheet anzuwenden.

Hat jemand irgendwelche Hinweise, wie ich Speicher besser verwalten können, während die XSL-Transformation Verarbeitung? Im Folgenden finden Sie ein Code-Snippet, wo ich die Transformation beantrage:

'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 # oder VB Beispiele sind in Ordnung ich entweder mit ... Diese App war eine Hand ich nach unten, so nicht Kritik für die vb arbeiten kann bitte :) -J

War es hilfreich?

Lösung

Sie verwenden einen Memorystream, und Sie laufen aus dem Speicher. Hmmm ...

Vielleicht stattdessen einen Filestream verwenden?

Andere Tipps

Versuchen Sie, und verwenden XPathDocument statt XMLReader. Es wird optimiert und viel schneller.

D

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top