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] Suppresion d'un noeud XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [DOM] Suppresion d'un noeud XML
    Voila mon fichier 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" encoding="UTF-8"?>
    <simpleviewerGallery maxImageWidth="480" maxImageHeight="480" textColor="0xFFFFFF" frameColor="0xffffff" frameWidth="20" stagePadding="40" thumbnailColumns="3" thumbnailRows="3" navPosition="left" title="Galerie" enableRightClickOpen="true" backgroundImagePath="" imagePath="" thumbPath="">
    <image>
    	<filename>1.jpg</filename>
    	<caption/>	
    </image>
    <image>
    	<filename>2.jpg</filename>
    	<caption/>	
    </image>
    </simpleviewerGallery>
    Et je voudrais en ayant juste le filename chercher la boucle correspondante dans le xml et ensuite supprimer le noeud image qui lui correspond.
    J'ai fait des recherches et trouvé un bout de code mais il me sort une erreur:
    • Fatal error: Call to a member function removeChild() on a non-object in C:\PHP\Site web ELEONORE\V3\xml.php on line 28


    Voici mon code:
    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
     
    function delete_nod()
    {
    $document = new DomDocument();
    $document->load('gallery.xml');
    $images = $document->getElementsByTagName('image');
    foreach ($images AS $image_)  {
    $found = false;
    foreach ($image_->childNodes AS $node)
    {
    if ($node->nodeType != XML_ELEMENT_NODE)
    continue;
    //$_GET['varname'] => nom de l'image recherché pour la suppression
    if ($node->tagName == 'filename' && $node->nodeValue == $_GET['varname'])
    {
    echo '<p>Image ' . $node->nodeValue . ' correctement supprimer!</p>';
    $image->removeChild($image_);
    }
    }
    $document->save('gallery.xml');
    }
    }

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Il n'est pas valide ou alors ce n'est qu'un extrait de votre document XML : il ne doit y avoir qu'une seule et unique racine à tout document D'autant plus que ça facilite les choses ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Voici le fichier xml en entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <simpleviewerGallery maxImageWidth="480" maxImageHeight="480" textColor="0xFFFFFF" frameColor="0xffffff" frameWidth="20" stagePadding="40" thumbnailColumns="3" thumbnailRows="3" navPosition="left" title="Galerie" enableRightClickOpen="true" backgroundImagePath="" imagePath="" thumbPath="">
    <image>
    	<filename>1.jpg</filename>
    	<caption/>	
    </image>
    <image>
    	<filename>2.jpg</filename>
    	<caption/>	
    </image>
    </simpleviewerGallery>

  4. #4
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    define('FICHIER_XML', 'gallery.xml');
    $dom = new DomDocument;
    $dom->preserveWhiteSpace = FALSE;
    $dom->formatOutput = TRUE;
    $dom->load(FICHIER_XML);
    $xpath = new DomXPath($dom);
    $res = $xpath->query(sprintf('/simpleviewerGallery/image[filename = "%s"]', utf8_encode($_GET['varname'])));
    foreach($res as $img) {
        $dom->documentElement->removeChild($img);
    }
    $dom->save(FICHIER_XML);


    Mais comme toujours il existe plusieurs solutions ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ca fonctionne, c'est nickel, merci beaucoup, seul j'aurais jamais trouvé


    Thx

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

Discussions similaires

  1. [DOM][XML] Suppresion d'un noeud
    Par junix dans le forum Langage
    Réponses: 1
    Dernier message: 18/04/2011, 15h50
  2. Réponses: 1
    Dernier message: 16/08/2007, 12h22
  3. [DOM] FF et récuperation de noeuds XML
    Par Syrus dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/05/2007, 08h45
  4. [DOM] Création d'un noeud xml avec childNode
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/03/2007, 11h18
  5. [XML] [DOM(XML?)] Suppression d'un noeud XML en php
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/01/2007, 15h11

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