Bitte, was ist eine gute Möglichkeit, wirklich große XML-Dokumente (bis zu 500 MB) in C# .NET 3.5 zu schreiben? Ich habe ein bisschen herumgesucht und finde anscheinend nichts, was diese spezifische Frage angeht.Wie schreibe ich (groß) XML in eine Datei in C#?
Mein vorheriger Thread (What is the best way to parse (big) XML in C# Code?) abgedeckt lesen ähnliche Magnitude Xml Dokumente ... Damit gelöst, muss ich darüber nachdenken, wie die aktualisierten Funktionen (http://www.opengeospatial.org/standards/sfa) in ein "update.xml" Dokument zu schreiben.
Meine Ideen: Offensichtlich ein großes DOM ist out, unter Berücksichtigung der maximalen Größe des Dokuments zu produzieren. Ich benutze XSD.EXE, um bindende Klassen aus dem Schema zu generieren ... was gut mit der XmlSerializer-Klasse zusammenpasst, aber ich denke, es baut ein DOM "unter der Haube". Ist das richtig?. Ich kann nicht alle Funktionen (bis zu 50.000) gleichzeitig im Speicher halten. Ich muss ein Feature aus der Datenbank lesen, serialisieren und in eine Datei schreiben. Ich denke, ich sollte den XmlSerializer verwenden, um ein "Doclet" für jedes einzelne Feature in die Datei zu schreiben. Ich habe (noch) keine Ahnung, ob das überhaupt möglich ist.
Was denkst du?
Hintergrund: Ich portiere ein altes VB6 MapInfo "Client-Plugin" zu C#. Es existiert ein J2EE "Update Service" (eigentlich nur eine Web-App) mit dem dieses Programm (ua) arbeiten muss. Ich kann den Server nicht ändern; es sei denn, es ist absolut notwendig; Dazu gehört insbesondere die Änderung der anderen Kunden. Der Server akzeptiert ein XML-Dokument mit einem Schema, das keine Namespaces definiert ... dh es gibt nur den Standard-Namespace, und alles ist darin enthalten.
Meine Erfahrung: Ich bin so ziemlich ein C# und .NET-Neuling. Ich programmiere seit ungefähr 10 Jahren in verschiedenen Sprachen einschließlich Java, VB, C und C++.
Prost alle. Keith.
PS: Es ist Abendessen Zeit, so werde ich für etwa eine halbe Stunde AWOL sein.
Marc, Merci. (Nach meinem Kommentar zu David Schmitts Antwort) Ich werde es auf beide Arten versuchen und einige Leistungstests durchführen. Ich danke Ihnen, Sir, für Ihre nachdenkliche Antwort und diesen Beispielcode. Genial. Ta. ;-) Ich hoffe nur, dass ich die Gunst eines Tages zurückzahlen kann. Prost. Keith. – corlettk