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] changer le contenu d'un noeud


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 18
    Points
    18
    Par défaut [DOM] changer le contenu d'un noeud
    salut,
    j'ai le fichier test.xml suivant:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>   
    <root>
      <parent id="1">
       <nom>toto</nom> 
      </parent>
      <parent id="2">
       <nom>fofo</nom> 
      </parent>
    </root>
    mon but est de changer le contenu du noeud du 1er parent ( je veux que 'toto' devient 'bobo' ! )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $doc = new DOMDocument;
    $doc->load('test.xml');
    $xpath = new DOMXPath($doc);
    $noeuds = $xpath->query("//parent[@id='1']/nom");
    $cible = $noeuds->item(0);
    $taille=strlen($cible->nodeValue);
    echo "chaine de : $taille <br>";
    $cible->deleteData(0,$taille);
    $cible->insertData(0, "bobo");
    echo $doc->saveXML();
    ?>
    ce code me retourne l'erreur:
    Fatal error: Call to undefined method DOMElement::deleteData() in C:\Program Files\VertrigoServ\_htdocs\projet\index.php on line 9
    Dans la doc officielle, deleteData() et insertData s'appliquent à DOMCharacterData... mais comment faire pour convertir mon DOMElement en DOMCharacterData?
    une proposition ?
    merci d'avance.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    a mon avis ton character data c est le premier fils de ton noeud.

    tu doit avoir un fils de type characterdata dans $cible

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $cible->firstChild->deleteData(0,$taille);
    $cible->firstChild->insertData(0, "bobo");
    Maintenant ça marche ! ton avis est juste...
    merci

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Probléme DOM ....
    Bonjour, j'ai un soucis avec DOM et je galère pas mal.

    J'ai un XML De type :

    <?xml version="1.0"?>
    <CONTENTS>
    <Content>
    <Type>Folder</Type>
    <Cle>/1</Cle>
    <Name>1</Name>
    <Url/>
    </Content>
    <Content>
    <Type>Folder</Type>
    <Cle>/2</Cle>
    <Name>2</Name>
    <Url/>
    </Content>
    <Content>
    <Type>Folder</Type>
    <Cle>/3</Cle>
    <Name>3</Name>
    <Url/>
    </Content>
    </CONTENTS>
    et je desirerai obtenir le xml suivant :

    <?xml version="1.0"?>
    <CONTENTS>
    <Content>
    <Type>Folder</Type>
    <Cle>/2</Cle>
    <Name>2</Name>
    <Url/>
    </Content>
    <Content>
    <Type>Folder</Type>
    <Cle>/1</Cle>
    <Name>1</Name>
    <Url/>
    </Content>
    <Content>
    <Type>Folder</Type>
    <Cle>/3</Cle>
    <Name>3</Name>
    <Url/>
    </Content>
    </CONTENTS>[/color][/size]

    C'est à dire échanger l'ordre de 2 noeuds "Content" ou copier les valeurs de l'un dans l'autre de tel sorte qu'en sortie cela soit inversé .....
    Je n' y arrive pas, et a vrai dire apres être parti dans tous les sens je ne sais pas deja sur kelle idée partir...
    Je suis preneur de toute infos .....
    je vous remercie par d'avance

    Emilie

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

Discussions similaires

  1. [DOM] [debutant] changer le contenu d un iframe en DOM
    Par junior68 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 10/06/2009, 17h29
  2. [DOM]Changer les noms des fils d'un noeuds après un clonenode
    Par Daï2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/01/2009, 17h27
  3. [DOM] avoir le contenu d'un sous noeud en fonction de l'attribut
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 20/07/2007, 17h24
  4. [DOM] changer le nom d'un noeud
    Par iznogoud36 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/07/2006, 12h45
  5. TREEVIEW : Editer (changer le nom) d'un Noeud
    Par cyberlewis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/07/2004, 15h00

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