IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Chercher 2 éléments dans un fichier XML de 80mo


Sujet :

ASP.NET

  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut Chercher 2 éléments dans un fichier XML de 80mo
    Salut,

    Selon vous, quelle est la méthode la plus rapide pour trouver 2 éléments dans un fichier XML de 80Mo (ce pourrait être plus):
    1. XmlTextReader avec une boucle
    2. XPath
    3. Autre...


    Merci de votre aide.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Avec XmlTextReader le document n'est pas chargé en mémoire, donc j'opterais pour cette solution à priori vu la taille des fichiers.

    L'autre approche serait d'utiliser XPathDocument + XPathNavigator. Le document est chargé en mémoire mais en lecture seule (plus performant qu'un XmlDocument du fait de la lecture seule il me semble).

    L'avantage de XPath c'est qu'il est plus simple de gérer la recherche, surtout si les critères peuvent changer.

    A tester les deux méthodes pour voir laquelle te convient le mieux suivant les impératifs que tu peux avoir (vitesse du traitement, mémoire, ...).

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Je suis d'accord sur l'utilisation d'un XmlReader ou d'un XPathNavigator. Je voulais simplement rectifier qu'ils sont plus performants du fait qu'ils ne chargent pas tout le document en mémoire, et non pas parce qu'ils sont en lecture seule.

    My 2 cents.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Je voulais simplement rectifier qu'ils sont plus performants du fait qu'ils ne chargent pas tout le document en mémoire, et non pas parce qu'ils sont en lecture seule.
    Un objet XPathNavigator est créé à partir d'un XmlDocument ou d'un XPathDocument et ces 2 classes impliquent un chargement du XML en mémoire. Ou alors j'ai raté un épisode depuis longtemps

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Un objet XPathNavigator est créé à partir d'un XmlDocument ou d'un XPathDocument et ces 2 classes impliquent un chargement du XML en mémoire. Ou alors j'ai raté un épisode depuis longtemps
    XmlDocument charge en mémoire, XPathDocument non (à ma connaissance).
    A vérifier tout de même
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par MSDN
    XPathDocument, classe

    Fournit une représentation en mémoire, en lecture seule et rapide d'un document XML à l'aide du modèle de données XPath.

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par smyley Voir le message
    J'ai pas compris ce que tu entendais pas là

    Je disais simplement que si le XPathDocument est plus rapide, c'est qu'il ne charge pas tout le document en mémoire, à la différence du XmlDocument, mais ce n'était peut-être pas très clair.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    A prioris, c'est une citation de http://msdn.microsoft.com/fr-fr/libr...nt(VS.80).aspx
    XPathDocument, classe
    Fournit une représentation en mémoire, en lecture seule et rapide d'un document XML à l'aide du modèle de données XPath.
    Qui sous entend que tout le document sera chargé en mémoire. Donc ce pourrait ne pas être la bonne solution.

    Il faut que je fasse des tests pour éclaircir tout ça.

    Merci de votre aide.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Je disais simplement que si le XPathDocument est plus rapide, c'est qu'il ne charge pas tout le document en mémoire, à la différence du XmlDocument, mais ce n'était peut-être pas très clair.
    En fait, partout où on cherche sur internet la description qui revient pour le XPathDocument est "in-memory tree representation of an XML document" et d'ailleurs si on fouille dans la dll System.Xml.dll tout semble indiquer qu'à sa création il charge la totalité du fichier XML en mémoire avant d'en permettre l'accès. Bien sur il sera très rapide vu que tout est en mémoire. Donc pour un fichier de 80 Mo le XmlTextReader semble tout indiqué ...

Discussions similaires

  1. [JDOM] Ajout d'un élément dans un fichier xml
    Par bidulee dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 24/04/2009, 16h40
  2. [DOM] Insertion d'élément dans un fichier XML en PHP
    Par marcus13 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/04/2008, 13h51
  3. [XPATH] Récupérer un élément dans un fichier XML
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 07/06/2007, 19h49
  4. Comment ajouter un élément dans un fichier XML
    Par sorilazer dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 04/06/2007, 21h56
  5. Réponses: 14
    Dernier message: 01/12/2003, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo