Aide pour supprimer un noeud XML, PHP 5, DOM [RESOLU]
8 messages
• Page 1 sur 1
- Sylvano06
- Nouveau WRInaute

- Messages: 12
- Inscription: 13 Fév 2006
Aide pour supprimer un noeud XML, PHP 5, DOM [RESOLU]
Bonjour a tous,
Je travail actuellement sur un document XML avec PHP5 et les fonctions DOM.
Je voudrais supprimer un noeud dans mon document xml identifié par un id, et supprimer également ses enfants.
Voici mon document xml :
Par exemple donc je souhaite supprimer le noeud photo 5 et donc son contenu.
Voici mon code PHP que j'utilise :
Quand j'essaye ce code, cela me donne cette erreur :
J'espere que quelqu'un pourra m'aider.
Bonne soirée à tous.
Cordialement.
Je travail actuellement sur un document XML avec PHP5 et les fonctions DOM.
Je voudrais supprimer un noeud dans mon document xml identifié par un id, et supprimer également ses enfants.
Voici mon document xml :
- Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<frenchQuality>
<photo id="0">
<image>img/img1.jpg</image>
<url>http://www.google.fr</url>
</photo>
<photo id="1">
<image>img/img2.jpg</image>
<url>http://www.web-together.com</url>
</photo>
<photo id="2">
<image>img/img3.jpg</image>
<url>http://www.clubic.com</url>
</photo>
<photo id="3">
<image>img/img4.jpg</image>
<url>http://www.ideal-com.com</url>
</photo>
<photo id="4">
<image>img/appli.JPG</image>
<url>test</url>
</photo>
<photo id="5">
<image>img/Coucher_de_soleil.jpg</image>
<url>couher</url>
</photo>
</frenchQuality>
Par exemple donc je souhaite supprimer le noeud photo 5 et donc son contenu.
Voici mon code PHP que j'utilise :
- Code: Tout sélectionner
<?php
//on recupere l'identifiant du noued a supprimer
$id = $_GET['id'];
/*on load le fichier xml*/
$data = new DOMDocument();
$data->load('bandeau.xml');
/*on recherche l'element qu'on veut supprimer dont l'id est
passé en paramétre*/
$deletePhoto = $data->getElementById($id);
$parent = $data->getElementsByTagName('frenchQuality');
/*on le delete*/
$parent->removeChild($deletePhoto);
/*on sauve le xml*/
$data->save('bandeau.xml');
?>
Quand j'essaye ce code, cela me donne cette erreur :
Fatal error: Call to undefined method DOMNodeList::removeChild() in /home.10.7/webtoget/www/ideal/delete.php5 on line 19
J'espere que quelqu'un pourra m'aider.
Bonne soirée à tous.
Cordialement.
Dernière édition par Sylvano06 le Ven Mai 18, 2007 14:10, édité 1 fois.
- honolulu
- WRInaute impliqué

- Messages: 942
- Inscription: 8 Nov 2005
salut,
je crois que tu n'appliques pas la bonne méthode au bon objet, cf http://www.aliasdmc.fr/dom_javascript/j ... child.html
je crois que tu n'appliques pas la bonne méthode au bon objet, cf http://www.aliasdmc.fr/dom_javascript/j ... child.html
-

Jeviensderio - WRInaute passionné

- Messages: 1340
- Inscription: 29 Sep 2006
$parent = $data->getElementsByTagName('frenchQuality');
Cette fonction retourne un DOMNodeList, il faudrait un DOMNode
$nodex = $parent->item(0);
ou $nodex = $parent[0];
Cette fonction retourne un DOMNodeList, il faudrait un DOMNode
$nodex = $parent->item(0);
ou $nodex = $parent[0];
- Sylvano06
- Nouveau WRInaute

- Messages: 12
- Inscription: 13 Fév 2006
Merci beaucoup pour vous réponses, malheuresement je suis un peu entrain de me perdre. Si je comprend bien donc je récupére une liste de noeud.
Je suis un peu perdu
En faite, je voudrais récuperer le noeud photo qui correspond a l'identifiant passé par la méthode GET et ensuite supprimer ce noeud ainsi que ses enfants.
Je suis un perdu mais ca doit être le mauvais réveil. En tout cas merci pour toutes vos réponses.
Je suis un peu perdu
En faite, je voudrais récuperer le noeud photo qui correspond a l'identifiant passé par la méthode GET et ensuite supprimer ce noeud ainsi que ses enfants.
Je suis un perdu mais ca doit être le mauvais réveil. En tout cas merci pour toutes vos réponses.
-

julienr - WRInaute impliqué

- Messages: 913
- Inscription: 5 Aoû 2003
voici un code qui marche, il semblerait qu'il faille tout ou presque faire à la main (recherche des noeud, parcours et test des attributs), à confirmer
- Code: Tout sélectionner
<?php
//on recupere l'identifiant du noued a supprimer
$id = $_GET['id'];
/*on load le fichier xml*/
$data = new DOMDocument();
$data->load('bandeau.xml');
$parent = $data->getElementsByTagName('photo');
for( $i=0; $i<$parent->length; $i++ ) {
$attr = $parent->item($i)->attributes;
for( $j=0; $j<$attr->length; $j++ ) {
if( $attr->item($j)->nodeName == 'id' && $attr->item($j)->nodeValue == $_GET['id'] )
$element = $parent->item($i);
}
}
$racine = $data->documentElement;
$suppr = $racine->removeChild($element);
?>
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- XML DOM et PHP
- [Résolu] [PHP - XML] Comment transformer XML en tableau
- Dom xml et php4
- 1&1 mutualisé : aide optimisation + supprimer affichage erreur php
- Aide Javascript / DOM
- URL Rewriting : sous-dom virtuels, Multi-dom OVH/DNS Gandi
- WordPress Mu passage dom repertoire vers dom sous domaine
- Redirection sousdom.dom/rep/ vers dom/rep/
- aide - comment supprimer ces fenêtres intempestives?
- AJax, php et xml, probleme de variable php
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: erestrebian et 2 invités
