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 !

4 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Faites juste ça

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

    à la place de

    $dom->saveXML();

    Cordialement
    1
  2. chico95
     
    Ouaah nikel sa marche !

    Merci beaucoup !

    Juste, j'aimerais savoir c'est quoi la différence entre les 2 ?
    0
  3. 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
    1. chico95
       
      Merci pour l'info ;)
      0
  4. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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
    1. chico95
       
      Nikel merci pour votre aide !
      0