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 :

[XML] Modifier une variable d'un fichier XML par le contenu de l'ID d'un autre fichier XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut [XML] Modifier une variable d'un fichier XML par le contenu de l'ID d'un autre fichier XML
    Bonjour,
    débutant en xml je me retrouve devant un problème haut dessus de mes compétentes...
    j'aimerais changer le contenu de ma variable contenu dans un fichier XMl par la valeur de l'ID correspondant d'un autre fichier XML,
    Je m'explique, j'ai deux fichiers xml, le premier, est le fichier descriptif :
    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0" encoding="utf-8"?>
    <objets>
      <objet type="departement" id="872298">
        <localisation>
          <adresse>
            <adresse1>la grande route</adresse1>
            <codePostal>03190</codePostal>
            <commune>
              <commune id="1"/>
            </commune>
          </adresse>
        </localisation>
      </objet>
      <objet type="reseau" id="877920">
        <localisation>
          <adresse>
            <adresse1>16 rue du Capitaine</adresse1>
            <codePostal>03310</codePostal>
            <commune>
              <commune id="4"/>
            </commune>
          </adresse>
        </localisation>
      </objet>
     </objets>

    Le deuxième contient les référence ID :
    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
    19
    20
    21
     
     
    <?xml version="1.0" encoding="utf-8" ?>
    <communes>
      <commune id="1">
        <nom>L'Abergement-Clémenciat</nom>
        <codePostal>03190</codePostal>
      </commune>
      <commune id="2">
       <nom>L'Abergement-de-Varey</nom>
        <codePostal>01640</codePostal>
      </commune>
      <commune id="3">
       <nom>Ambérieu-en-Bugey</nom>
        <codePostal>01500</codePostal>
      </commune>
      <commune id="4">
        <nom>Ambérieux-en-Dombes</nom>
        <codePostal>03310</codePostal>
      </commune>
      </communes>


    J'aimerais pouvoir en PHP remplacer toutes les ID communes du fichier 1 par le nom de la commune du fichier 2.
    en espérant avoir été clair,

    Merci de votre aide par avance.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    On va mettre en pratique simplexml, xpath ensemble et on va peut-être apprécier l'avantage de la technologie xml, sur des autres, en vue de la simplicité, concision et adaptabilité de la solution.
    Code php : 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
    //ce sont sort de données préalables
    $f_in='xxx_source.xml';
    $f_lookup='xxx_lookup.xml';
    $f_out='xxx_out.xml';
     
    $xml_in=simplexml_load_file($f_in);
    $xml_lookup=simplexml_load_file($f_lookup);
     
    $nodelist=$xml_in->xpath('//commune[@id]');    //commune avec un attribut id existent
     
    while(list ( , $node)=each($nodelist)) {
        $id=$node['id'];
        $nodelistlookup=$xml_lookup->xpath("//commune[@id=$id]/nom");
        $ndlookup=($nodelistlookup)?$nodelistlookup[0]:false;
        if ($ndlookup) {
            $nom=(string)$ndlookup;
            $node->addChild('nom', $nom);
        }
    }
     
    $xml_in->saveXML($f_out);

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Merci Tsuji
    Merci beaucoup, c'est exactement cela.
    J'aimerais pouvoir te dire a charge de revanche.... pas en XMl ....en tout cas , mais on ne sait jamais!
    Encore Merci

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

Discussions similaires

  1. Modifier le contenu d'une variable dans un fichier de conf XML
    Par ShellNoob dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/11/2017, 22h47
  2. Modifier une variable dans un fichier
    Par xavierdestev dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/04/2015, 15h16
  3. Réponses: 4
    Dernier message: 21/03/2007, 11h35
  4. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46

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