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] save et les noeuds fantôme


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Par défaut [DOM] save et les noeuds fantôme
    Bonjour !

    Je cherche à mettre à jour un fichier XML en rajoutant des noeuds.
    J'y arrive trés bien, sauf qu'après chaque noeud que je souhaite ajouter, s'ajoute un nouveau noeud qui n'a rien à faire là...

    Voici l'architecture de mon fichier xml :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <racine>
      <nouvelle>
        <date>4 Juin 2007</date>
        <texte>un texte</texte>
      </nouvelle>
      <nouvelle>
        <date>5 Juin 2007</date>
        <texte>un autre texte</texte>
      </nouvelle>
    </racine>

    Voici maintenant comment je rajoute un noeud à 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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    $doc = new DOMDocument();
    $doc->load($fichierXML);
    $racine = $doc->documentElement;
     
    $nouvellenouvelle = $doc->createElement("nouvelle");
    $nouvelledate = $doc->createElement("date");
    $nouveautexte = $doc->createElement("texte");
     
    $noeudtextedate = $doc->createTextNode((string)$_POST['jour']." ".(string)$_POST['mois']." ".(string)$_POST['annee']);
    $noeudtextetexte = $doc->createTextNode((string)$_POST['texte']);
     
    $nouvelledate->appendChild($noeudtextedate);
    $nouveautexte->appendChild($noeudtextetexte);
     
    $nouvellenouvelle->appendChild($nouvelledate);
    $nouvellenouvelle->appendChild($nouveautexte);
     
    $racine->appendChild($nouvellenouvelle);
     
    echo $doc->saveXML()."\n";
    $doc->save($fichierXML);
    En faisant cela, j'espère modifier mon fichier xml de manière à ce qu'il ressemble à ça :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <racine>
      <nouvelle>
        <date>4 Juin 2007</date>
        <texte>un texte</texte>
      </nouvelle>
      <nouvelle>
        <date>5 Juin 2007</date>
        <texte>un autre texte</texte>
      </nouvelle>
      <nouvelle>
        <date>6 Juin 2007</date>
        <texte>un autre texte rajouté par le script php</texte>
      </nouvelle>
    </racine>

    D'ailleur, la ligne
    echo $doc->saveXML()."\n";
    Me confirme que mon fichier ressemble bien à ce que je voulais.
    Pourtant, quand je regarde le fichier xml enregistré par $doc->save($fichierXML);
    un autre noeud "nouvelle" apparaît tout à la fin de mon xml qui du coup ressemble à ca :
    Code XML : 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
    <racine>
      <nouvelle>
        <date>4 Juin 2007</date>
        <texte>un texte</texte>
      </nouvelle>
      <nouvelle>
        <date>5 Juin 2007</date>
        <texte>un autre texte</texte>
      </nouvelle>
      <nouvelle>
        <date>6 Juin 2007</date>
        <texte>un autre texte rajouté par le script php</texte>
      </nouvelle>
      <nouvelle>
        <date> </date>
        <texte/>
      </nouvelle>
    </racine>

    Bref, je ne comprends pas d'où vient ce "noeud fantôme", et j'en suis bien embêté...

    Pourriez-vous m'aider à comprendre ce shmilblick ?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 351
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 351
    Billets dans le blog
    17
    Par défaut
    Je viens de faire le test avec ton code (à peine modifié, j'ai juste viré les $_POST) et je n'ai pas de souci, pas de <nouvelle> fantôme.
    Peut-être un PHP / DOMXML bugué ?
    Peux-tu donner un testcase simpliste et pleinement fonctionnel illustrant le "bug" ?
    Perso : PHP 5.2.4-dev

Discussions similaires

  1. [DOM] Parcourir et supprimer les noeuds d'un XML
    Par bankette dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/08/2012, 14h48
  2. récupérer tous les noeuds du DOM
    Par crocodile dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/11/2009, 09h08
  3. [DOM-PHP5] distingué les types de noeuds
    Par kanzarih dans le forum Langage
    Réponses: 8
    Dernier message: 03/08/2009, 10h25
  4. [DOM] Problème de retour chariot après les noeuds
    Par Phenomenium dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/03/2008, 13h58
  5. [XPath] reconnaitre les noeuds feuilles de l'abre Dom
    Par kkwet30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/02/2008, 12h47

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