2011-03-15 5 views
6

Je dois lire des fichiers XML potentiellement volumineux (~ 300mb) et modifier certains des noeuds. Fondamentalement, je dois:Le plus rapide/meilleur moyen de lire le code XML

  • Lire le code XML depuis le début
  • Chaque fois que je trouve un nœud appelé Cib
  • Ajouter un texte à ce

Quelle est la meilleure façon d'aborder cela en C# ? Quelles classes XML dois-je utiliser pour rechercher et modifier les noeuds que je dois modifier?

TIA

Répondre

4

VTD-XML est le seul parsing XML lib qui prend en charge une fonctionnalité appelée mise à jour incrémentielle. Il est également efficace et performant. Mais il vous oblige à le télécharger en tant que tiers lib.

+0

Impressionnant - c'est définitivement quelque chose que je vais regarder. Merci! –

+0

Assurez-vous d'indiquer que c'est votre propre produit dans vos réponses, de peur d'être considéré comme spam. – ArtOfCode

3

De mon expérience de transformation de très grande taille (2 Go +) fichiers xml (ne demandez pas!) J'ai trouvé xsl transforme pour être le plus rapide - Les moteurs impliqués sont fortement optimisés pour de telles tâches, comparer à n'importe quelle boucle manuelle etc. vous pourriez essayer.

+0

Vous savez que je pense que vous avez raison. Bien que XSLT peut être intimidant pour certaines personnes. – ChaosPandion

+2

Juste commentaire, même si la plupart des transformations sont relativement simples, et vous pouvez toujours poster une question sur SO! –

+0

Maintenant, n'est-ce pas une idée folle? – ChaosPandion

2

S'il s'agit d'une opération assez simple similaire à find-and-replace, vous pouvez essayer de la traiter comme un fichier texte normal au lieu d'un document xml. J'imagine que cela pourrait être plus rapide que tout l'analyse XML.

3

vous pouvez utiliser Linq-to-XML. en bref, lire avec XDocument, analyser et ajouter des données avec Linq. Ce ne sera pas le code le plus rapide, mais sera probablement le plus rapide à écrire.

Si vous avez des contraintes de mémoire, vous devrez probablement analyser manuellement (c.-à-charge qu'une partie de celui-ci dans la mémoire, le processus de cette partie, le remplacer dans le fichier)

Questions connexes