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] Modifier la valeur d'un noeud


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
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Par défaut [DOM] Modifier la valeur d'un noeud
    Bonjour,
    J'imagine que c'est la chose la plus simple à faire en DOM, mais impossible de trouver sur Google.

    J'ai un fichier XML, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <settings>
      <abc>1</abc>
      <def>2</def>
    </settings>
    J'aimerais remplacer la valeur de abc (1) par 2 et celle de def (2) par 3, pour faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <settings>
      <abc>2</abc>
      <def>3</def>
    </settings>
    J'ai déjà fait un petit bout de code, mais j'ai des erreurs... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dom = new DomDocument();
    $dom->load($Fichier);
    $node = $dom->getElementsByTagName('abc');
    $node ->setAttribute("abc", "2");
    $dom->save($Fichier);
    Merci de m'aider !

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    DOMDocument::getElementsByTagName renvoie un DOMNodeList et pas un DOMElement, il faut donc traverser la liste pour changer les values des nodes:

    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
     
    $xml = <<<XML
    <?xml version="1.0"?>
    <test>
    	<abc>Say Hello To Peter</abc>
    	<def>No I won't</def>
    </test>
    XML;
     
    $dom = new DomDocument();
    $dom->loadXML($xml);
    $nodelist = $dom->getElementsByTagName('abc');
    foreach ($nodelist as $node) {
    	$node->nodeValue = "2";
    }
     
    echo $dom->saveXML();
    et voilà

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Par défaut
    Ça marche niquel, je te remercie !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Par défaut
    Par contre, petite question, quand j'édite il y a au début ceci : <?xml version="1.0"?>
    Comment l'enlever ?
    Merci.

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Tu ne l'enlèves pas. C'est nécéssaire pour que ton flux soit un XML valide.

    Si c'est une portion de XML ou de XHMLT qui tu génères avec DOM, alors tu peux toujours faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $stream = $dom->saveXML();
    $stream = str_replace('<?xml version="1.0" ?>', '', $stream);
    That would do the trick

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Par défaut
    Ca ne marche pas :

    Object of class DOMDocument could not be converted to string

Discussions similaires

  1. [DOM] Modifier le contenu d'un noeud complet
    Par getrude dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/07/2012, 11h48
  2. Modifier la valeur d'un noeud d'un arbre XML
    Par Rony Rauzduel dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 01/03/2012, 14h30
  3. modifier le valeur d'un noeud xml
    Par ragu23 dans le forum C#
    Réponses: 2
    Dernier message: 09/12/2010, 12h32
  4. [DOM] Modifier la valeur d'un noeud dans un fichier XML
    Par rob2-9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/08/2008, 20h31
  5. [DOM] modifier la valeur d'un élément de formulaire
    Par philippe.z dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/06/2007, 19h47

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