Wie können Sie einen tief verschachtelten XML mit LINQ (nur Streaming) filtern, während Sie die Baumstruktur beibehalten?

StackOverflow https://stackoverflow.com/questions/1027815

  •  06-07-2019
  •  | 
  •  

Frage

Ich möchte wissen, wie man ein sehr großes, tief verschachteltes XML -Dokument mit LINQ streamen, während ich es streamen, Knoten basierend auf einigen Kriterien filtern und dann die Streamed -Ausgabe in eine Datei schreiben, während die gleiche ursprüngliche Struktur des XML beibehalten wird .

Dies sollte geschehen, ohne das gesamte Dokument in den Speicher zu laden.

Ist das möglich?

War es hilfreich?

Lösung 2

This paper contains the answer to my question:

http://homepages.cwi.nl/~ralf/api-streaming-xml/

Specifically it shows how to maintain tree structure of an original XML when filtering the results while streaming.

Andere Tipps

LINQ zu XML unterstützt nicht direkt das Lesen in Streaming, aber ich hatte Erfolg bei der Verwendung eines XmlReader, filtern basierend auf das, und dann an die Weitergabe XElement.Load Als ich den Subtree entdeckt habe, an dem ich interessiert bin. Es wird davon ausgegangen, dass der Subtree klein genug ist, um in das Gedächtnis zu passen. Wann Load Rückgaben, der Leser wird über diesen Unterbaum hinaus bewegt, und Sie können weitermachen, bis Sie den nächsten relevanten Subtree usw. finden.

Sehen Dieser MSDN -Blog -Beitrag Weitere Informationen und Beispielcode.

(Das habe ich mit dem Stack Overflow Data Dump gemacht, übrigens :)

For XML streaming options, check out the XML Team's discussion of streaming with LINQ to XML starting with http://blogs.msdn.com/xmlteam/archive/2007/03/05/streaming-with-linq-to-xml-part-1.aspx. Realize that it is an early blog series and there were some implementation detail changes made in the final release.

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