Php - Problème avec XML

Résolu/Fermé
chico95 - 15 févr. 2011 à 14:19
 chico95 - 16 févr. 2011 à 09:36
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
15 févr. 2011 à 15:06
Bonjour,

Faites juste ça

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

à la place de

$dom->saveXML();

Cordialement
1
Ouaah nikel sa marche !

Merci beaucoup !

Juste, j'aimerais savoir c'est quoi la différence entre les 2 ?
0
Utilisateur anonyme
15 févr. 2011 à 15:42
->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
Merci pour l'info ;)
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
15 févr. 2011 à 16:54
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
Nikel merci pour votre aide !
0