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

XML/XSL et SOAP Discussion :

[XML] Mixer le contenu de 2 XML (sans doublons)


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut [XML] Mixer le contenu de 2 XML (sans doublons)
    Bonjour à tous !

    Je vous pose le contexte :
    J'ai une application qui stocke des données dans un fichier XML. Ce fichier est transportable et utilisable à partir de n'importe quelle version de l'application. Je souhaite pouvoir intégrer les modifications faites sur ce XML dans le XML de base de l'application.

    En gros, j'ai deux fichiers XML différents mais qui respectent la même structure, et je voudrais mixer les deux pour obtenir un XML contenant l'union de mes deux fichiers...pour rajouter de la difficulté, je ne veux pas de doublons, donc pas question de faire une simple concaténation

    Ma question est la suivante : existe-t-il déjà un moyen de le faire ?

    Si la réponse est non, bah il va falloir que je me retrousse les manches, mais cela me ferait gagner beaucoup de temps de ne pas réinventer la roue, sauf si la roue n'existe pas...enfin bref.

    Merci d'avance pour vos infos.

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    oui c largement possible à priori.
    Maintenant il faudrait un exemple de XML...

  3. #3
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Par défaut
    C'est pas trivial d'après ce que j'ai pu comprendre, jète un oeil là :

    http://www.developpez.net/forums/sho...d.php?t=125746

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    En effet, cela m'a l'air assez tendu...

    Pour ce qui est de la structure de mes XML, je ne peux pas la diffuser, mais elle est du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="UTF-8"  standalone="no" ?> 
    <Noeud1>
    <FOLDER name="Name1" />
    <FOLDER name="Name2">
    <FILE index="10" name="fileName10" />
    <FILE index="11" name="fileName11" />
    </FOLDER>
    </Noeud1>
    Et maintenant on imagine un autre fichier XML avec juste quelques balises FILE en plus dans le même FOLDER "Name2" et un nouveau FOLDER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"  standalone="no" ?>      
    <Noeud1>
    <FOLDER name="Name2">
    <FILE index="10" name="fileName10" />
    <FILE index="35" name="fileName35" />
    <FILE index="70" name="fileName70" />
    </FOLDER> <FOLDER name="Name3" />
    </Noeud1>
    Et moi je veux obtenir un joli mix de tout ça (en obtenir l'UNION) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"  standalone="no" ?> 
         <Noeud1>
    <FOLDER name="Name1" />
    <FOLDER name="Name2">
    <FILE index="10" name="fileName10" />
    <FILE index="11" name="fileName11" />
    <FILE index="35" name="fileName35" />
    <FILE index="70" name="fileName70" />
    </FOLDER> <FOLDER name="Name3" />
    </Noeud1>

    Alors, à votre avis, difficile à un tel point que cela me prendrait plusieurs jours ou pas ?

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par pataguillon
    Alors, à votre avis, difficile à un tel point que cela me prendrait plusieurs jours ou pas ?
    Non, juste 10 minutes...

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
     
    <xsl:variable name="otherXML" select="document('union2.xml')"/>
     
    <xsl:template match="Noeud1">
      <xsl:copy>
        <xsl:apply-templates select="FOLDER"/>
        <!-- on recopie les FOLDER qui se trouve dans union2.xml et pas dans union1.xml -->
        <xsl:copy-of select="$otherXML//FOLDER[not(@name=current()/FOLDER/@name)]"/>
      </xsl:copy>
    </xsl:template>
     
    <xsl:template match="FOLDER">
      <xsl:copy>
        <xsl:copy-of select="@*"/>
        <!-- on recopie les éléments FILE du FOLDER courant -->
        <xsl:copy-of select="FILE"/>
        <!-- et on recopie les FILE de l'autre document qui sont dans un FOLDER
     avec le même nom que celui du FOLDER courant et qui n'ont pas d'équivalent dans le FOLDER courant -->
          <xsl:copy-of select="$otherXML//FOLDER[@name=current()/@name]/FILE[not(@index=current()/FILE/@index)]"/>
      </xsl:copy>
    </xsl:template>
     
    </xsl:stylesheet>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    Merci beaucoup pour cette réponse mais elle m'interpelle un peu car j'ai l'impression qu'elle n'est pas générique...je m'explique : dans ta solution apparaît "noeud1", or je ne suis pas certain de connaître le nom de chaque noeud...

    Remarque, ça pourrait le faire si je parse le premier XML avant de les mixer...

    Je vais voir ça ! Ta solution va me donner des pistes à explorer, je pense.

    Merci encore !

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/03/2015, 08h38
  2. Extraire le contenu des balises XML
    Par calimero2611 dans le forum Modules
    Réponses: 7
    Dernier message: 12/06/2006, 15h09
  3. Newbie en XML: récupérer le contenu avec de l'ASP
    Par yoda_style dans le forum ASP
    Réponses: 3
    Dernier message: 13/01/2006, 11h46
  4. 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
  5. [Securité] contenu de source xml inconnue ds une page web
    Par Mr N. dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 21/03/2005, 14h33

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