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 XML] Modification d'un fichier XML en php


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut [DOM XML] Modification d'un fichier XML en php
    Bonjour,
    je suis en train de tester l'API DOM
    http://www.lacentraleinternet.com/rk...l.classes.html

    j'aimerai juste savoir comment faire modifier le bon tag

    voila mon fichier xml :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="iso-8859-1" ?> 
        <libelles>
        <libelle><cle>titre</cle><valeur>Bienvenu</valeur><langue>Fr</langue></libelle>
        <libelle><cle>menu.accueil</cle><valeur>Accueil</valeur><langue>Fr</langue></libelle>
        <libelle><cle>liste.nbElements</cle><valeur>Nombre d'éléments : </valeur><langue>Fr</langue></libelle>
        <libelle><cle>actions</cle><valeur>Actions</valeur><langue>Fr</langue></libelle>
    </libelles>

    et mon script php :
    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
    $file_name = "./../ressources/libelles.xml";
    	$file = dirname(__FILE__).$file_name;
     
    	$dom = domxml_open_file($file,DOMXML_LOAD_DONT_KEEP_BLANKS) or die ("Impossible d'ouvrir le fichier XML !"); 
     
    	if(!is_object($dom)) {
    		return "Le document XML n'est pas 'Well Formed' !"; 
    	}
     
    	$root = $dom->document_element();
    	$libelles = $root->get_elements_by_tagname("libelle");
     
    	// Recherche du noeud dont la cle est $cle
    	$nd = null;
    	for ($i=0; $i<count($libelles); $i++) {
    		if ($libelles[$i]->cle->?? == $cle) {
    			$nd = $libelles[$i];
    		}
    	}
    	.....

    Quelle méthode dois-je utiliser pour connaitre la valeur du noeud : $libelles[$i]->cle ?
    et pour ecrire la nouvelle valeur dans $libelles[$i]->valeur ?

    Merci d'avance

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    aldo-tlse
    Membre habitué
    un membre habitué au forum devrait savoir qu'il faut utiliser la balise CODE !!

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    c'est ce qu'il y a de plus important pour toi ?
    je suis bloqué à cause de ce pb
    en balisant mon message, tu réussiras à m'aider ?


    je suis habitué à utiliser le forum de flash, et apparemment les tags pour baliser les messages sont différents, alors je ne me suis pas préoccuppé de ca

    voila tout

  4. #4
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Citation Envoyé par aldo-tlse
    c'est ce qu'il y a de plus important pour toi ?
    je suis bloqué à cause de ce pb
    en balisant mon message, tu réussiras à m'aider ?
    plus, car j'aurai envie de lire ton message, au lieu de passer dessus ...

    Citation Envoyé par aldo-tlse
    je suis habitué à utiliser le forum de flash, et apparemment les tags pour baliser les messages sont différents, alors je ne me suis pas préoccuppé de ca
    sur le forum flash de developpez.net ? c'est toujours la balise Code ...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    alors j'ai trouvé une solution,
    mais je ne comprends pas pourquoi la méthode set_content($valeur) n'écrase pas l'ancienne valeur (mais la concatène)

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
      $file_name = "./../ressources/libelles.xml";
      $file = dirname(__FILE__).$file_name;
     
      $dom = domxml_open_file($file,DOMXML_LOAD_DONT_KEEP_BLANKS) or die ("Impossible d'ouvrir le fichier XML !"); 
     
      if(!is_object($dom)) {
      	return "Le document XML n'est pas 'Well Formed' !"; 
      }
     
      $dom->formatOutput = true;
      $root = $dom->document_element();
      $libelles = $root->get_elements_by_tagname("libelle");
     
      for ($i=0; $i<count($libelles); $i++) {
      	$cles = $libelles[$i]->get_elements_by_tagname("cle");
     
      	if ($cles[0]->get_content() == $cle) {
        $nd = $libelles[$i];
        $valeurs = $libelles[$i]->get_elements_by_tagname("valeur");
        $valeurs[0]->set_content($valeur);
      	}
      }
     
     
      //On récupere la chaine XML de l'objet DOM
      $chaine_XML = $dom->dump_mem(true, "iso-8859-1");
     
      //Enregistrement dans le fichier
      $id_fichier = fopen($file_name, "w");
      rewind($id_fichier);
      fwrite($id_fichier, $chaine_XML);
      fclose($id_fichier);

Discussions similaires

  1. [DOM XML] Modification d'un fichier XML en php
    Par ecureuil_38 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/05/2008, 02h27
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  4. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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