[PHP]Supprimer un élément avec removeChild()

Fermé
Utilisateur anonyme - 4 juil. 2010 à 17:12
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 4 juil. 2010 à 18:36
Bonjour, depuis environ une dizaine d'heure (voir plus) ^^ j'essaye de supprimer un élément de mon fichier XML avec removeChild() de l'API DOM mais rien ne marche et la doc ne m'aide pas du tout.
Voici mes codes :
Code : XML
<?xml version="1.0" encoding="utf-8"?>
<!--Configuration-->
<site>
	<menu>
		<titre>Pomme</titre>
		<titre>Poire</titre>
		<titre>Abricot</titre>
	</menu>
</site>


Et le code php que j'utilise mais qui ne marche pas
Code : PHP

$dom = new DomDocument();
	$dom->load('def.xml');
	$ligne = $dom->getElementsByTagName('titre')->item(2); //item(2) parle de l'element Abricot
	$dom->removeChild($ligne);
	$dom->save('def.xml'); // enregistrement



Et j'obtiens cette erreur :

Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in index.php:29 Stack trace: #0 index.php(29): DOMNode->removeChild(Object(DOMElement)) #1 {main} thrown in index.php on line 29
A voir également:

1 réponse

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 498
4 juil. 2010 à 18:36
Salut.

C'est tout à fait normal.
Ce n'est pas $dom qui contient le noeud que tu souhaites supprimer, mais le noeud "menu".

Voilà un code qui fonctionne.
<?php
$dom = new DomDocument();
$dom->load('def.xml');

$menu = $dom->getElementsByTagName('menu')->item(0);
$ligne = $menu->getElementsByTagName('titre')->item(2);

$menu->removeChild($ligne);
$dom->save('def.xml');
?>
0