Php - Problème avec XML

Résolu
chico95 -  
 chico95 -
Bonjour à tous,

J'ai un fichier XML comme ceci :

<?xml version='1.0' standalone='yes'?>
<menus>
	<menu>
		<nom>bo</nom>
		<ss_menus>
			<ss_menu>
				<ss_nom>aaa</ss_nom>
			</ss_menu>
			<ss_menu>
				<ss_nom>bbb</ss_nom>
			</ss_menu>
		</ss_menus>
	</menu>
	<menu>
		<nom>bw</nom>		
		<ss_menus/>						
	</menu>	

	<menu>
		<nom>qlikvaaaaa</nom>
		<ss_menus/>	
	</menu>
</menus> 


Et j'aimerais pouvoir supprimer le menu portant le nom 'qlikvaaaaa', or j'ai tout essayé mais je n'y arrive pas. PHP ne me génère aucune erreur, mais le script ne fait rien...

Voila mon code :
$menu=htmlspecialchars($_POST['choix']); 
	


	/*on load le fichier xml*/
	$dom = new DOMDocument();

	$dom->load('../menu.xml');

	$parent = $dom->getElementsByTagName('menu');
	
	for($i=0; $i<=$parent->length-1; $i++) 
	{	
		 $listeMenu = $parent->item($i)->getElementsByTagName('nom');
		 foreach($listeMenu as $liste) 
		 {
			if($liste->firstChild->nodeValue == $menu)
			{
				$element = $parent->item($i);
			}         
		 }
	}

	$dom->documentElement->removeChild($element);	
	$dom->saveXML();


Merci pour votre aide !



A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour,

Faites juste ça

$dom->save('menu.xml');

à la place de

$dom->saveXML();

Cordialement
1
chico95
 
Ouaah nikel sa marche !

Merci beaucoup !

Juste, j'aimerais savoir c'est quoi la différence entre les 2 ?
0
Utilisateur anonyme
 
->saveXML() renvoi un String qui contient le XML
->save(fichier), sauve dans un fichier
moi aussi je me suis cassé les dents là dessus

Cordialement
0
chico95
 
Merci pour l'info ;)
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

Je n'avais pas lu les autres réponses alors, pour ne pas avoir codé pour rien, voici mon code un peu plus court que le tiens :



<?php
// Création de l'objet DOM
$dom = new DOMDocument('1.0');
$dom->loadXML($xml);

// Recherche de l'élément
$noms = $dom->getElementsByTagName('nom');
foreach($noms as $nom) {
	if($nom->textContent == 'qlikvaaaaa') {
		// Suppression
		$nom->parentNode->removeChild($nom);
	}
}

// Affichage du XML (pas de sauvegarde de la modif.)
echo $dom->saveXML();
?>
0
chico95
 
Nikel merci pour votre aide !
0