Aide pour supprimer un noeud XML, PHP 5, DOM [RESOLU]
8 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
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.
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 accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
$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];
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.
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
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google rejoint le projet Open AJAX créé par IBM
- Google Enterprise a son blog
- Google propose en option un lien pour supprimer un site des résultats
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Un (RSS) pour tous (les blogs officiels de Google)
- Les meilleures extensions Firefox pour le référencement
- Le blog officiel de Google au Japon
- Le blog officiel de Google Custom Search (CSE)
- Concours WRI / Vivastreet : gagnez un voyage à New-York
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum