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

VB.NET Discussion :

For each avec objet d'itération variable


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur génie électrique
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut For each avec objet d'itération variable
    Bonjour à tous,

    Lorsque j'essai de changer de manière dynamique l'objet d'itération de ma boucle For each, VB2010 me donne l’exception suivante : InvalidOperationException.

    Plus concrètement , dans mon fichier XML, je scrute tous les noeuds que je veux tester, et s'ils ne satisfassent pas aux conditions, je les supprime. A ce moment la, la liste de nœud change de taille et ça plante voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
            Dim Cio As XmlNodeList
            Dim Materiel As XmlNode
            Dim pere As XmlNode
            Dim node As XmlNode
    Cio = feuille.GetElementsByTagName("Cio")
    For Each Materiel In Cio
                        père = Materiel.ParentNode
     
                        If Materiel.Attributes.ItemOf(1).Value = "CT" Then
     
                            If Saisi_util(j).GTW <> Materiel.Attributes.ItemOf(1).Value & "_" & Materiel.Attributes.ItemOf(2).Value Then
     
                                pere.RemoveChild(Materiel)
     
                            End If
     
                        End If
     
                    Next

    Dans mes recherche, j'ai entendu parler de " IEnumerable" , mais pas moyen de trouver un exemple compréhensible.

    Merci de votre aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut
    Bonjour,

    Je suis assez perplexe sur ce que vous faites..

    Vous récupérez le nœud père du nœud actuel de la boucle, pour pouvoir supprimer son fils qui n'est autre que le nœud actuel de la boucle.

    Je ne vois pas d'autre exploitation du nœud père dans le code fourni.

    Par conséquent pourquoi ne pas le supprimer directement de la liste CIO ?

    Pour pouvoir suppimer dans une liste, il faut la parcourir "à l'envers"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i as integer = CIO.count -1 to 0 step -1 
    next
    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur génie électrique
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    bonjour,

    Merci de votre réponse.


    En effet , je définit le père du nœud afin de pouvoir supprimer le nœud . ( je ne connais pas d'autres méthode )

    Pour la méthode que tu propose, je l'ai déjà essayé. Dans cette méthode "CIO.count" évolue aussi car à chaque fois que je vais supprimer un nœud, je vais louper le nœud suivant.

    Je viens de trouver une autre méthode qui fonctionne bien ( peut être sur un malentendu ). En utilisant la bibliothèque XMLDOMdocument, le CIO.count n'hérite pas des actions faite sur le père des noeuds dans la liste.
    voici les simples modifications du code les prochains :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    Dim Cio As IXMLDOMNodeList
                    Dim Materiel As IXMLDOMNode
                    Dim père As IXMLDOMNode
                    Dim node As IXMLDOMNode

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle For Each avec Offset variable suivant Application.thiscell.column
    Par Ganeshiva dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/07/2015, 17h43
  2. [XSLT] For-each avec variable multidimensionelle
    Par pourloineus dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/08/2009, 10h04
  3. For-each avec une variable en php
    Par Aurel06 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 03/08/2009, 12h52
  4. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  5. [XSL] For each avec variables imbriquées
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/05/2008, 19h28

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