Quel est le meilleur moyen d’parsingr un fichier XML volumineux (taille de 1 Go) en C #?

J’ai un fichier XML de 1 Go et je veux l’parsingr. Si j’utilise XML Textreader ou XMLDocument, le résultat est très lent et parfois, il se bloque …

Vous devrez implémenter une logique personnalisée à l’aide de xmlreader. xmlreader ne charge pas l’intégralité du XML en mémoire avant de l’utiliser, ce qui signifie que vous pouvez le lire à partir d’un stream et le traiter comme tel.

XmlDocument n’est pas réalisable dans ce scénario car il essaiera d’insérer ce gigaoctet dans la mémoire principale. Je suis surpris que vous trouviez XmlTextReader trop lent. Avez-vous essayé quelque chose comme ce qui suit?

using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt")) { // use rdr to advance through the document. } 

XMLTextreader n’est pas supposé se bloquer car il est basé sur le stream et ne fonctionne que sur des fragments de données.

Si cela se bloque, il se peut que vous fassiez quelque chose de mal lors du chargement du fichier.

Je ne connais pas très bien ce sujet, mais autant que je sache, les classes XmlReader devraient bien fonctionner pour votre problème spécifique. Après tout, ils sont optimisés pour cela.

Je voudrais simplement sauvegarder tous ceux qui promeuvent XmlReader avec une comparaison de performances que j’ai trouvée:

http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html