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

XSL/XSLT/XPATH XML Discussion :

XML et PHP 5 : Problème : supprimer plusieurs fils (removeChild) dans un Foreach


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut XML et PHP 5 : Problème : supprimer plusieurs fils (removeChild) dans un Foreach
    Bonjour à tous !

    Alors voilà, j'ai un petit problème. Voici mon document XML qui contient une liste d'équipement et des variables pour chaque équipement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <monfichier>
    <equipement>
      <var id="1" taille="10"></var>
      <var id="2" taille="8"></var>
      <var id="3" taille="8"></var>
      <var id="4" taille="10"></var>
    </equipement>
    </monfichier>
    Je voudrais supprimer toutes les balises "var" de mon équipement, je procède comme il suit avec une boucle foreach :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $equipement = $monDOMDocument->getElementsByTagName('equipement')->item(0);
     
    $listeVar = $equipement->getElementsByTagName('var');
    foreach($listeVar as $var)  
    {
    $equipement->removeChild($var);
    }
    Le problème, c'est que je me retrouve avec seulement une balise "var" sur deux de supprimée !?

    Ainsi la moitié des balises reste ! Seule les balises ayant l'id 1 et 3 ont disparues. Les balises ayant l'id 2 et 4 sont toujours présentes et donc je me retrouve avec le Document XML suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <monfichier>
    <equipement>
     
      <var id="2" taille="8"></var>
     
      <var id="4" taille="10"></var>
    </equipement>
    </monfichier>
    Alors que je voudrais simplement cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <monfichier>
    <equipement>
     
    </equipement>
    </monfichier>
    Cela fait maintenant une journée entière que je bute sur détail. Mais je ne vois vraiment pas d'où vient le problème, à moins que la boucle foreach se considère à la balise suivante quand on supprime la balise en cours, ainsi l'incrémentation du curseur se ferait de 2 crans de suite, loupant ainsi une balise sur 2.

    Si c'est le cas comment faire pour simplement supprimer mes balises "var" de mon équipement ?

    Je vous remercie d’avance pour vos éventuelles solutions !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 163
    Points : 120
    Points
    120
    Par défaut
    J'ai finalement trouvé une solution :

    http://www.nicotouch.com/2009/02/php...s-dune-balise/

Discussions similaires

  1. Supprimer plusieurs enregistrements sélectionnés dans un dbGrid
    Par kroma23 dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/09/2008, 14h10
  2. [DOM] Supprimer plusieurs fils dans un noeuds
    Par Mo_Poly dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 03/03/2008, 17h53
  3. Supprimer plusieurs champs sélectionnés dans une ListBox
    Par piotrr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/12/2007, 15h49
  4. Réponses: 3
    Dernier message: 06/06/2007, 15h21
  5. [PHP-JS] problème avec la balise href dans php
    Par metrax dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2007, 10h06

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