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

 .NET Discussion :

récupérer un IEnumerator sur XMLNodeList impossible: InvalidOperationException


Sujet :

.NET

  1. #1
    Membre régulier Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Points : 107
    Points
    107
    Par défaut récupérer un IEnumerator sur XMLNodeList impossible: InvalidOperationException
    Bonjour,
    En C#, j'ai un document XML xmlDoc et ses noeuds.
    Je souhaite parcourir la liste des noeuds du root pour récupérer celui qui m'intéresse. Je fais donc
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    XmlNodeList wellNodeList = rootNode.ChildNodes;
    IEnumerator wellEnum = wellNodeList.GetEnumerator();
     
    while (wellEnum.MoveNext())
    {
    XmlNode aWell = (XmlNode)wellEnum.Current;
    ...
    }
    Or le Current me retourne une InvalidOperationException.
    Si j'ai bien compris c'est parce que l'énumérateur aurait été modifié par ajout ou suppression d'élément.
    Or entre l'appel à GetEnumerator et le while je ne fais rien d'autre.
    L'inspection de variables me montre que wellNodeList contient bien tous les éléments qui sont censé s'y trouver et je peux d'ailleurs les parcourir.
    Par contre je ne peux effectivement pas regarder le conteu de wellEnum (c'est donc bien là que ça ne marche pas, mais du coup je ne vois déjà pas pourquoi il réussi à passer le MoveNext sans problème...).
    Je ne vois pas ce qui ne fonctionne pas dans ce GetEnumerator...
    J'ai essayé la méthode rootNode.GetEnumerator(); mais ça ne donne rien de mieux.

    Précision : le document xml n'est pas un document que j'ai chargé mais que je suis en train de construire.

    merci pour votre aide,
    bon code.
    kerinel

  2. #2
    Membre habitué Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    Je viens d'essayer votre code avec un document xml que je connais et il fonctionne très bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    XmlDocument doc = new XmlDocument();
    doc.Load("geolocalisation.xml");
     
    XmlElement rootNode = doc.DocumentElement;
     
    XmlNodeList wellNodeList = rootNode.ChildNodes;
    System.Collections.IEnumerator wellEnum = wellNodeList.GetEnumerator();
     
    while (wellEnum.MoveNext())
    {
        XmlNode aWell = (XmlNode)wellEnum.Current;
    }
    Je pense donc que le problème vient du document que vous construisez.
    Précision : le document xml n'est pas un document que j'ai chargé mais que je suis en train de construire.

  3. #3
    Membre régulier Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    merci pour votre aide.
    Il y aurait donc un comportement différent de l'objet XmlDocument suivant qu'on lise ou qu'on écrive un document ? Normalement entre deux opération d'ajout de noeud, l'état devrait être stable ?
    C'est un peu bizarre.
    J'ai contourné le problème en créant d'abord des objets qui stockent mon information et je ne crée le document xml qu'une fois mon arborescence prête. Ce n'est peut-être pas très subtil mais au moins ça marche.
    Je ne mettrait pas résolu puisque ce n'est pas tout à fait le cas, mais disons que le problème ne se pose plus.
    Merci bien.
    Bon code.
    kerinel

Discussions similaires

  1. Impossible de récupérer les mails sur OE6 sur un compte Office365
    Par Jon Shannow dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 27/02/2015, 11h40
  2. Récupérer valeur sur clique impossible
    Par kyoku59 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/06/2012, 12h31
  3. Impossible de récupérer les paquets sur Debian
    Par Unfam0us dans le forum Debian
    Réponses: 2
    Dernier message: 14/09/2010, 10h30
  4. [SOAP][PHP5] impossible de récupérer une données sur un appel
    Par gentony dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 24/09/2009, 16h08
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

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