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] Ajout de noeuds


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 497
    Par défaut [DOM] Ajout de noeuds
    Bonjour,

    j'ai un fichier XML existant, et je voudrais y ajouter un noeud a un emplacement donné du fichier...

    J'ai le Xpath du noeud :

    /tourPkg/itinerary/accomodation/choice/hotel/facilities/roomType/model/exceptions/specialOccupancy

    Et le noeud en question, celui a rajouter...


    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <specialOccupancy code="AAA" matchPriority="1">
        <sales>
            <charge invoiceItemCode="PRX-RED-3ADU"/>
        </sales>
        <guestCounts>
            <total/>
            <ageGroup countStd="3" code="adult"/>
        </guestCounts>
    </specialOccupancy>


    Bon, Avec SimpleXML, il semblerait qu'on ne puisse pas ajouter de noeud dans le document... Donc je m'oriente vers DOM.. mais ca n'est pas encore très documenté ! loin de la !

    Pourriez vous me donner quelques pistes ? Merci !

  2. #2
    Membre expérimenté
    Avatar de ghostdogpr
    Étudiant
    Inscrit en
    Octobre 2003
    Messages
    198
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2003
    Messages : 198
    Par défaut
    Salut,

    En effet SimpleXML ne permet pas de faires ajouts et tu peux passer par DOM.

    Il te faudra utiliser les fonctions suivantes (tu trouveras des exemples pour chaque sur http://php.net ) :

    Créer l'arbre DOM et la requete xpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $dom = new DomDocument();
    $xpath = new DomXPath($dom);
     
    $dom->load(...);
     
    $parent = $xpath->query(...);
    Créer l'élément à insérer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dom->createElement(...);
    puis insérer l'élément avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $parent->item(0)->appendChild(...);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $parent->item(0)->insertBefore(...);
    puis tu peux remettre le xml dans une chaine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Put the XML in a string
    $fin = $dom->saveXML();
    Voila, tu devrais pouvoir t'en sortir

Discussions similaires

  1. [DOM] Ajouter un noeud dans un XML existant
    Par splifferwolf dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 11/02/2008, 17h01
  2. [DOM] Ajouter un noeud, tout simplement
    Par MeTaLCaM dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 29/06/2007, 12h01
  3. [DOM] Localiser un noeud pour l'ajout
    Par sla dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 05/02/2007, 09h38
  4. [DOM] Ajouter un noeud dans un noeud défini
    Par Hombre dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 15/05/2006, 20h48
  5. [DOM] PHP5 et XML comment ajouter un noeud dans un noeud précis?
    Par titou250 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 20/04/2006, 22h02

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