Lecture de documents XML volumineux au format .net

J’ai besoin de lire des fichiers XML volumineux à l’aide de fichiers .net qui peuvent facilement avoir plusieurs Go de taille.

J’ai essayé d’utiliser XDocument, mais il lève simplement une exception System.OutOfMemoryException lorsque j’essaie de charger le document.

Quel est le moyen le plus performant de lire des fichiers XML de grande taille?

Vous devez fondamentalement utiliser le modèle “pull” ici – XmlReader et ses amis. Cela vous permettra de diffuser le document au lieu de tout charger en mémoire en une seule fois.

Notez que si vous savez que vous êtes au début d’un élément “assez petit”, vous pouvez créer un XElement partir d’un XmlReader , gérer cela en utilisant la gloire de LINQ to XML, puis passer à l’élément suivant.

La page suivante fait une lecture intéressante, offrant un moyen d’exploiter les données d’un fichier XML sans les charger en mémoire. Il vous permet de combiner la vitesse de XmlReader avec la flexibilité de Linq:

http://msdn.microsoft.com/en-us/library/bb387035.aspx

Et un article assez intéressant basé sur cette technique:

http://blogs.msdn.com/b/xmlteam/archive/2007/03/24/streaming-with-linq-to-xml-part-2.aspx

Vous pouvez essayer d’utiliser une instance de XmlTextReader .

http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.aspx