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

Format d'échange (XML, JSON...) Java Discussion :

Linéariser un XML


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Par défaut Linéariser un XML
    Bonjour,

    J'aurais besoin "d'aplatir" un XML, en gros dupliquer les "lignes" quand je rencontre plusieurs racines équivalentes.
    Ce traitement doit être générique, les fichiers XML pouvant être différents.

    Selon vous de quelle manière faut-il aborder le problème et quelle librairie serait la plus adaptée ? DOM, SAX,...

    Soit le XML suivant,
    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
     
    <MERE>
      <NOM>DUPOND</NOM>
      <PNOM>JEANNETTE</PNOM>
      <ENFANT>
        <NOM>DUPOND</NOM>
        <PNOM>BOB</PNOM>
        <PERE>
          <NOM>DUPOND</NOM>
          <PNOM>JACKIE</PNOM>
         </PERE>
      </ENFANT>
      <ENFANT>
        <NOM>DUPOND</NOM>
        <PNOM>CYRILLE</PNOM>
        <PERE>
          <NOM>DUPOND</NOM>
          <PNOM>JACKIE</PNOM>
         </PERE>
      </ENFANT>
    </MERE>
    <MERE>
    ...
    </MERE>
    que j'aimerais transformer en celui-ci.

    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
     
    <MERE>
      <NOM>DUPOND</NOM>
      <PNOM>JEANNETTE</PNOM>
      <NOM>DUPOND</NOM>
      <PNOM>BOB</PNOM>
      <NOM>DUPOND</NOM>
      <PNOM>JACKIE</PNOM>
    </MERE>
    <MERE>
      <NOM>DUPOND</NOM>
      <PNOM>JEANNETTE</PNOM>
      <NOM>DUPOND</NOM>
      <PNOM>CYRILLE</PNOM>
      <NOM>DUPOND</NOM>
      <PNOM>JACKIE</PNOM>
    </MERE>
    <MERE>
    ...
    </MERE>

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par SONY30
    Selon vous de quelle manière faut-il aborder le problème et quelle librairie serait la plus adaptée ? DOM, SAX,...
    Les transformations XSLT, vu qu'elles ont été inventées pour cela

    1. telecharger et installer Xalan
    2. ajouter les 3 lignes de code pour executer le moteur xslt
    3. ecrire le fichier xsl qui va bien..

    exemple de xsl:
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*" />
     
    <xsl:template match="/MERE">
    <xsl:copy>
    <xsl:apply-templates/>
    </xsl:copy>
    </xsl:template>
     
    <xsl:template match="*[ancestor::MERE and count(*)=0]">
    <xsl:copy-of select="." />
    </xsl:template>
     
    </xsl:stylesheet>
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 857
    Par défaut
    J'ai essayé de faire cela avec une feuille de style XSLT, mais cela est très compliqué et mes compétences très limitées, c'est pour cela que je comptais faire cela en Java.

    Pour info, je ne connais pas la structure de mon XML, ni le nom des balises ni la profondeur.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ben dans se cas la, avec DOM tu peux faire une fonction récursive tant qu'il y a des enfants sur le noeud courant et en bout de chaine tu copies le noeud.
    Avec Sax, peut être avec une variable globale pour tracer le niveau d'imbrication de chaque noeud, à la fermeture d'un noeud tu regarde si son niveau était le plus bas rencontré (donc pas de fils) et dans ce cas tu fais la copie.

Discussions similaires

  1. xml -> xsl -> xml
    Par virgile04 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/10/2002, 16h53
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  4. Débutant XML
    Par viny dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 25/07/2002, 12h07
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 13h51

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