Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2007, 15h09   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 191
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 191
Points : 47
Points : 47
Par défaut [DOM] Soucis avec removeChild

Bonjour à tous,
je ne comprends pas pourquoi le removeChild ne passe pas,
quelqu'un pourrais m'indiquer la raison?
merci d'avance.
xml:
Code XML :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<albums>
  <parametre longueur="30" largeur="40" />
 <album nom="vacance">
        <images>
                <image src="01.jpg"></images>
                <image src="02.jpg"></images>
        <images>
</album>
<album nom="foot">
        <images>
                <image src="03.jpg"></images>
                <image src="04.jpg"></images>
        <images>
</album>
 <album nom="tennis">
        <images>
                <image src="05.jpg"></images>
                <image src="06.jpg"></images>
        <images>
 </album>
 </albums>
php:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<?php
        if(!empty($_POST['affichnom']))
        {
                $nom_sport = $_POST['affichnom'];
                header('Content-Type: text/html; charset=ISO-8859-1');
                $doc = new DOMDocument('1.0','ISO-8859-1');
                $doc->load('sport.xml');       
                $parent = $doc->getElementsByTagName('album');
 
                foreach($parent as $a)
                {
                  if($a->getAttribute('nom') == $nom_sport)
                  {
                        $enfant = $doc->getElementsByTagName('image');
                        foreach($enfant as $e)
                        {
                              $parent->removeChild($e);
                              $doc->save('sport.xml');
 
                        }       
 
                  }
                }
 
          }
        ?>
starr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 16h52   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous cherchez à supprimer quelle partie ? Les noeuds image ayant pour ancêtre un noeud album où l'attribut nom a pour valeur $_POST['affichnom'] ?

Code :
$enfant = $doc->getElementsByTagName('image');
Vous allez sans doute supprimer tous les noeuds image du document ($doc).

Code :
$parent->removeChild($e);
Pourriez-vous essayer avec
Code :
$e->parentNode->removeChild($e);
Code :
$doc->save('sport.xml');
Faites-le une seule fois tout à la fin : inutile de le faire à chaque itération.

Voir éventuellement la solution de la FAQ utilisant XPath : Comment supprimer les noeuds correspondant à une expression XPath en PHP5 ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2007, 18h22   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 191
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 191
Points : 47
Points : 47
merci encore un fois pour votre aide Julp,
ça fonctionne,
mais ça me supprime juste une balise <image>
j'aurai souhaité que ça supprime toute la balise <album> avec les <image> dedans

edit : oki j'ai retirer une boucle et tout fonctionne
merci pour votre experience Julp, vous êtes vraiment très fort
bonne soirée à vous.
starr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h58.


 
 
 
 
Partenaires

Hébergement Web