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 :

Transformation de document .XML ou .TXT en Java


Sujet :

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

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Transformation de document .XML ou .TXT en Java
    Bonjour,
    Voici mon problème,
    J'ai un document XML généré automatiquement à partir d'un document Excel, mais il n'a pas la structure que je voudrais exploiter:

    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
      <sheet>
        <name><![CDATA[DouaneApprovisionnement]]></name>
        <row number="0">
          <col number="0"><![CDATA[Pays-origine]]></col>
          <col number="1"><![CDATA[Pays-destination]]></col>
          <col number="2"><![CDATA[FamillePiece]]></col>
        </row>
        <row number="1">
          <col number="0"><![CDATA[ZA1]]></col>
          <col number="1"><![CDATA[ZP1]]></col>
          <col number="2"><![CDATA[FP1]]></col>
        </row>
        <row number="2">
          <col number="0"><![CDATA[ZA2]]></col>
          <col number="1"><![CDATA[ZP1]]></col>
          <col number="2"><![CDATA[FP2]]></col>
        </row>
        <row number="3">
          <col number="0"><![CDATA[ZA3]]></col>
          <col number="1"><![CDATA[ZP1]]></col>
          <col number="2"><![CDATA[FP1]]></col>
        </row>
      </sheet>
    Je voudrais trouver un moyen (une fonction Java) qui me permettra de le transformer à la structure suivante:

    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
     
    	<DouanesApprovisionnement>
    		<DouaneApprovisionnement nom="DA1">
    			<Pays-origine>ZA1</pays-origine>
    			<Pays-destination>ZP1</pays-destination>
    			<FamilllePieces>FP1</famillePieces>
    		</DouaneApprovisionnement>
    		<DouaneApprovisionnement nom="DA2">
    			<Pays-origine>ZA2</pays-origine>
    			<Pays-destination>ZP1</pays-destination>
    			<FamilllePieces>FP2</famillePieces>
    		</DouaneApprovisionnement>
    		<DouaneApprovisionnement nom="DA3">
    			<Pays-origine>ZA3</pays-origine>
    			<Pays-destination>ZP1</pays-destination>
    			<FamilllePieces>FP1</famillePieces>
    		</DouaneApprovisionnement>
    	</DouanesApprovisionnement>
    Il doit y avoir un moyen de le faire, étant donné que toutes les données du fichier résultat sans dans le fichier source.

    Merci d'avance de votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Utiliser XSLT est une bonne option.

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par cdespont Voir le message
    Utiliser XSLT est une bonne option.
    Merci de me répondre.
    J'ai bien pensé et essayé de le faire avec XSLT, mais ça ne marche pas parce que les éléments ont des noms qui répètent, du genre: col, number, sheet, ...et si j'applique une transformation XSLT sur le document ça va changer tous les éléments de même nom, et ce n'est pas ce que je cherche

  4. #4
    Membre expérimenté
    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
    Points : 1 610
    Points
    1 610
    Par défaut
    Mais si ça marche :p :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" />
     
      <xsl:variable name="el0" select="/sheet/name/text()"/>
       <xsl:variable name="rootName" select="concat($el0,'s')"/>
      <xsl:variable name="att0" select="//row[@number='0']/col[@number='0']/text()"/>
      <xsl:variable name="att1" select="//row[@number='0']/col[@number='1']/text()"/>
      <xsl:variable name="att2" select="//row[@number='0']/col[@number='2']/text()"/>
     
      <xsl:template match="/sheet">
        <xsl:element name="{$rootName}">
          <xsl:for-each select="row[@number!='0']">
            <xsl:element name="{$el0}">
              <xsl:element name="{$att1}"><xsl:value-of select="col[@number='0']/text()"/></xsl:element>
              <xsl:element name="{$att1}"><xsl:value-of select="col[@number='1']/text()"/></xsl:element>
              <xsl:element name="{$att2}"><xsl:value-of select="col[@number='2']/text()"/></xsl:element>
            </xsl:element>
          </xsl:for-each>
        </xsl:element>
      </xsl:template>
     
    </xsl:stylesheet>

  5. #5
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Merci infiniment de vos réponses.
    En fait, j'ai utilisé votre .XSL pour transformer mon document, mais hélas, elle ne donne le résultat prévue, elle me retourne un document de ce type:
    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
     
             DouaneApprovisionnement
                  Pays-origine
    	      Pays-destination
    	      FamilllePieces
     
                  ZA1
    	      ZP1
    	      FP1
     
    	      ZA2
                  ZP1
    	      FP2
     
    	      ZA3
                  ZP1
        	      FP1
    au lieu de ça:
    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
     
    <DouanesApprovisionnement>
    		<DouaneApprovisionnement nom="DA1">
    			<Pays-origine>ZA1</pays-origine>
    			<Pays-destination>ZP1</pays-destination>
    			<FamilllePieces>FP1</famillePieces>
    		</DouaneApprovisionnement>
    		<DouaneApprovisionnement nom="DA2">
    			<Pays-origine>ZA2</pays-origine>
    			<Pays-destination>ZP1</pays-destination>
    			<FamilllePieces>FP2</famillePieces>
    		</DouaneApprovisionnement>
    		<DouaneApprovisionnement nom="DA3">
    			<Pays-origine>ZA3</pays-origine>
    			<Pays-destination>ZP1</pays-destination>
    			<FamilllePieces>FP1</famillePieces>
    		</DouaneApprovisionnement>
    	</DouanesApprovisionnement>
    Je n'arrive pas à trouver où ça cloche, merci d'avance de votre aide.

  6. #6
    Membre expérimenté
    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
    Points : 1 610
    Points
    1 610
    Par défaut
    Salut,
    Je ne répond que maintenant car j'étais en vacances :p.
    A mon avis cela vient du paramétrage de ton processeur XSLT qu'il faut configurer pour générer de l'xml et pas du text par défaut.
    J'ai retesté le xsl qui marche avec les editeurs que j'utilise pour mes test XSL-T : "XML Copy Editor" et "EditX". Ils interpretent bien la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="xml" />
    .
    En Java il faut le spécifier dans le code, je sais pas ce que tu utilises pour faire ta transformation, alors je peux pas t'en dire plus.

Discussions similaires

  1. [XSLT] Transformer un Document XML
    Par merlinerick dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/05/2009, 17h16
  2. [XSLT] Tutoriel sablotron pour transformer un document XML
    Par fido1 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 12/12/2008, 17h04
  3. [XSD] Comment transformer un fichier xml en fichier xsd (java)
    Par mehdiing dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/03/2008, 11h21
  4. [XSL] transformer un document xml dans le format pdf
    Par soumou dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/11/2006, 19h39
  5. [XSL] Transformation de document xml
    Par youbyoub dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/04/2005, 16h13

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