Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOMXML
DOMXML Forum d'entraide pour l'extension DOMXML permettant de manipuler des documents XML en PHP 4 (approche DOM). Avant de poster -> tutoriels DOMXML
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 01/05/2006, 22h45   #1
Invité de passage
 
Inscription : avril 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 4
Points : 1
Points : 1
Par défaut [DOMXML] Problème suppression de noeud XML

Bonjour,

Je ne comprend pas pourquoi cette méthode de supression ne fonctionne pas :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
function deleteReferer($name) { 
     $dd = domxml_open_file("fic.xml"); 
     $noderoot = $dd->document_element(); 
      $referers = $noderoot->get_elements_by_tagname("referer"); 
 
     foreach ($referers as $referer) { 
       $attr=$referer->attributes(); 
       ///on cherche le bon noeud/ 
       if(strcmp($name, $attr[0]->value)==0) { ///cela fonctionne, on  rentre bien dans la boucle/ 
        $child = $noderoot->remove_child($referer); ///suppression/ 
       } 
      } 
      if($dd->dump_file("fic.xml")) 
        return true; 
       else 
        return false;    
}
Mon fichier fic.xml :

Code XML :
1
2
3
4
<referers> 
   <referer site="localhost"  url="http://localhost/zzz/www/test_refer.php" date="26-04-2006 17:59:19"/> 
   <referer site="localhost"  url="http://localhost/zzz/www/test_refer.php" date="26-04-2006 17:59:13"/> 
</referers>
Il n'ya aucune erreur, $noderoot->remove_child($referer) me renvoie bien un noeud et pas false.

Merci de m'eclairer !

Arnaud.
xenoox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2006, 23h13   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
quand tu dis "ça marche pas", il se passe quoi ?

au fait, tu ferais mieux d'utiliser http://fr3.php.net/manual/fr/functio...tattribute.php que attributes (surtout qu'il semblerait que [] ne soit pas reconnu pour les DOMNamedNodeMap, et qu'il faille utiliser item : http://fr3.php.net/dom )
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2006, 23h19   #3
Invité de passage
 
Inscription : avril 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 4
Points : 1
Points : 1
Le noeud n'est pas supprimé !

Cette partie fonctionne bien, il rentre dans la boucle lorsqu'il detecte le bon noeud
Code :
 strcmp($name, $attr[0]->value)==0
Mais ne le supprime pas.

Code :
 $child = $noderoot->remove_child($referer);
xenoox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2006, 23h25   #4
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
As-tu verifié ton fichier xml ?
Il est identique du debut à la fin ?
__________________
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2006, 23h34   #5
Invité de passage
 
Inscription : avril 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 4
Points : 1
Points : 1
Le fichier xml est identique du debut à la fin.

J'ai legerement modifier le code, mais il ne veut toujours pas supprimer les noeuds :
(Il rentre bien dans la condition :
Code :
if(strcmp($name, $referer->get_attribute("site"))==0)
)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    function deleteReferer($name) {
      $dd = domxml_open_file($this->fic);
      $noderoot = $dd->document_element();
      $referers = $noderoot->child_nodes();
 
      foreach ($referers as $referer) {
        if(strcmp($name, $referer->get_attribute("site"))==0) {
         $child = $noderoot->remove_child($referer);
        }
       }
 
       if($dd->dump_file($this->fic))
         return true;
        else 
         return false;    
    }
xenoox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2006, 23h39   #6
Membre émérite
 
Avatar de Linaa
 
Inscription : avril 2005
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 988
Points : 922
Points : 922
C'est ptete un problème de droit d'accès à ton fichier.
(Il faut autoriser le droit d'écriture)
__________________
Linaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2006, 23h45   #7
Invité de passage
 
Inscription : avril 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 4
Points : 1
Points : 1
Non les droits sont bien mis sur le fichier (l'ajout fonctionne tres bien)

En fait lorsque je fais un
Code :
1
2
$xmlfile = $dd->dump_mem(true);
echo htmlentities($xmlfile);
La modification est bien visible.

Le problème doit venir du
Code :
$dd->dump_file($this->fic)
Mais je ne vois pas pourquoi.
xenoox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2006, 03h37   #8
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Je dis ça juste comme ça... mais es-tu sûr que la variable $dd est bien modifiée ? que ce n'est pas plutôt une copie du fragment d'arbre DOM qui le serait ? as-tu essayé de faire un dump de $dd pour vérifier ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög 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 03h25.


 
 
 
 
Partenaires

Hébergement Web