-
XmlDocument . Load
Bonjour à tous,
Petite question théorique pour mon travail de fin d'études dans lequel je dois justifier mes choix d'implémentation :
La méthode XmlDocument.Load(String param) charge-t-elle en mémoire le doc (ce qui me semblerait plus que logique) ou ouvre-t-elle simplement le dossier pour travailler en direct dessus ?
Autre question qui en découle : en .NET 2.0, est-il plus efficace de faire une recherche directement dans le document (qui ne contient pas énormément de données), ou est-ce préférable de désérializer et de travailler sur une liste ?
Merci d'avance pour l'aide ! :ccool:
-
Bonjour
Le XmlDocument est une représentation en mémoire du fichier XML que tu charges. Donc gros fichier XML = gros chargement en mémoire = perf dégradées, il faut garder ça en tête.
Si tu as des contraintes de vitesses, le XmlReader qui fournit des méthodes de lecture est la classe la plus rapide et celle la moins consommatrice de mémoire, et pour cause, elle ne met pas en cache le fichier XML. Cependant, elle fournit un accès au fichier "forward-only". Tu ne peux pas lire ce que tu veux, il faut imaginer un curseur qui se positionne au début du fichier et qui ne fait qu'avancer.
Pour ta 2nd question, si le document reste léger, je te conseille de désérialiser et de faire tes recherches sur des collections de type List. Avec LinqToObject le travail de recherche sera grandement facilité.
-
Merci beaucoup !
Etant donné que mes fichiers sont relativement petits mais avec un accès fréquent, je reste sur XmlDocument avec (dé)sérialization.
Par contre, j'aurais aimé pouvoir utiliser LINQ mais je suis sous .NET 2.0 :(
Je garderai donc mes "bêtes" recherches dans boucle.