IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[DOM] Suppression d'un élément


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Par défaut [DOM] Suppression d'un élément
    Bonjour, cela fait plusieurs jour que je "bute" sur un removeChild qui ne marche pas
    C'est sur du php5 dom xml
    voici un bout de xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0"?>
    <gallery title="blabla Album" thumbDir="./images/thumbs/" imageDir="./images/" random="true">
    	<category name="aa" id="1">prout 1</category>
    	<category name="bb" id="2">prout 2</category>
    	<category name="areu" id="3">prout 3</category>
    	<del name="haha" id="3">prout del</del>
    	<id_current>
    		<category_id>2</category_id>
    		<image_id>0</image_id>
    	</id_current>
    </gallery>
    la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    	public function retirer($id_sel)
    	{
    		//génération du id
    		$id = new gestid($this->file);
    		$new_id = $id->genid('category','suppr');
     
    		// ouverture fichier xml
    		$doc = new DOMDocument();
    		//$doc->formatOutput = true;
    		$doc->load($this->file);
     
    		// récupération de l'id
    		$searchNode = $doc->getElementsByTagName($this->name);
    		//$racine = $doc->documentElement;
    		//echo $searchNode->nodeName;
    		$searchNode->removeChild($searchNode);
     
    		foreach( $searchNode as $cate_del )
    		{
    			$valueID = $cate_del->getAttribute('id');
    			if ($valueID == $id_sel)
    			{
                                    //$searchNode->removeChild($searchNode);
                                    //$searchNode->removeChild($cate_del);
                                    //$searchNode->parentNode($searchNode);
    				//$cate_del->parentNode->removeChild($cate_del);
    				//echo $cate_del->firstChild->nodeValue;
    			}
    		} 
    	}
    Alors comme on peu voir dans les commentaires, j'ai essayer plein de manière différente, et la je sèche, je pense que cela est tout simple mais je ne vois pas
    Pour le teste j'aimerais supprimer la ligne
    <del name="haha" id="3">prout del</del>

    Si quelqu'un pouvais m'aider merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $searchNode->parentNode->removeChild($searchNode);


    Mais la méthode getElementsByTagName retourne un objet DOMNodeList qu'il faut auparavant parcourir (itération foreach) ou accéder à l'élément voulu (méthode item).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Par défaut
    j'avais essayer cela ne fonctionne pas

    par contre là a l'intérieur du foreach avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $cate_del->parentNode->removeChild($cate_del);
    Je n'est plus d'erreur par contre il remove rien du tout, pourtant il rentre dans le if

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Oui, euh, c'est probablement dû au fait que c'est parce que l'objet DOMNodeList que vous parcourez est modifié en même temps par ces suppressions. Il faudrait construire un tableau de DOMNode intermédiaire ou utiliser une autre méthode de parcours.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 73
    Par défaut
    a c'est bon j'ai trouvé
    enfait, de un j'oubliais de sauvegarder a la fin le fichier avec ->save loool
    et de 2 j'ai un bout de code au dessu pour générer des id, il s'exécute pas asser vite, du coup sa buguais, enfin bon, j'ai bidouiller et sa fonctionne

    Et cela fonctionne avec
    $cate_del->parentNode->removeChild($cate_del);



    Merci pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Suppression d'un élément d'un sitemap
    Par Ptite Pupuce dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 20/10/2007, 23h52
  2. [DOM]Suppression attribut html
    Par kobe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/07/2006, 10h49
  3. Réponses: 8
    Dernier message: 01/04/2006, 10h10
  4. [DOM] - Suppression de noeud.
    Par jacquesh dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/02/2006, 11h34
  5. Réponses: 14
    Dernier message: 01/12/2003, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo