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 :

reconstruire ou transformer un fichier xml en java [DOM]


Sujet :

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

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut reconstruire ou transformer un fichier xml en java
    Bonjour à tous,

    J'ai un petit travail à faire en xml et je ne sais pas trop quels outils utiliser pour faire çà.

    J'ai un fichier xml formaté comme ci dessous. il provient d'un fichier word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <DocumentBody>
    <Paragraph StyleName="#1-REF"><Text>566897879</Text></Paragraph>
    <Paragraph StyleName="#2-REFFOUR"><Text>xvcbbcvb</Text></Paragraph>
    <Paragraph StyleName="#3-DESIGN">desi<Text>bbbbb</Text></Paragraph>
    <Paragraph StyleName="#4-COTE">74x204<Text>bbbbc</Text></Paragraph>
    <Paragraph StyleName="#5-CATEG">men.<Text>cccc</Text></Paragraph>
    <Paragraph StyleName="#1-REF"><Text>56566446</Text></Paragraph>
    <Paragraph StyleName="#2-REFFOUR"><Text>dd546</Text></Paragraph>
    <Paragraph StyleName="#3-DESIGN"><Text>desi</Text></Paragraph>
    <Paragraph StyleName="#3b-NIVEAU"><Text>niv1</Text></Paragraph>
    <Paragraph StyleName="#4-COTE"><Text>100x100</Text></Paragraph>
    <Paragraph StyleName="#5-CATEG"><Text>ext.</Text></Paragraph>
    <DocumentBody>
    le but serait d'arriver à ceci

    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
    <documentbody>
    <produit>
    <REF>566897879</REF>
    <REFFOUR>xvcbbcvb</REFFOUR>
    <DESIGN>desi</DESIGN>
    <COTE>74x204</COTE>
    <CATEG>men.cc</CATEG>
    </produit>
    <produit>
    <REF>56566446</REF>
    <REFFOUR>dd546</REFFOUR>
    <DESIGN>desi</DESIGN>
    <NIVEAU>niv1</NIVEAU>
    <COTE>100x100</COTE>
    <CATEG>ext.</CATEG>
    </produit>
    </documentbody>
    J'arrive déjà à parcourir le fichier xml (le premier) en java avec le code ci dessous. Le but serait de reconstruire un fichier xml mieux formé, mais j'ai l'impression que je m'égare.

    avec Le code suivant je récupère bien le contenu mais je voudrais identifié chaque membre pour pouvoir reconstruire un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    NodeList elements = doc.getElementsByTagName("Paragraph");
    for(int i=0 ; i<elements.getLength();i++)
    {
         System.out.println(elements.item(i).getTextContent()  );   
    }
    merci d'avance pour vos conseils, votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    Quand je parcours mon fichier xml avec le code ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Noeuds.item(i).getTextContent()
    je recupére pour le noeud suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Paragraph StyleName="#REF"><Text>64646654</Text></Paragraph>
    la valeur 64646654

    très bien ! mais comment faire pour savoir que Noeuds.item(i) est une Ref.
    Si j'utilise la méthode .getNodeName() pour le même noeud il me donne évidemment Paragraph


    merci pour votre aide

  3. #3
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Normalement il faudrait que tu utilise la méthode getAttributes() qui permet de récupérer les attributs et les valeurs de ces attributs pour un Node. Je t'invite à consulter l'API pour en voir le fonctionnement exact.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    ah merci bien pour cette piste.
    Je vais creuser de ce côté.

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    Le cas que tu nous presente est une transformation d'un fichier XML vers un autre fichier XML. Et generalement pour gerer ce cas de figure on écrit une feuille XSL qui permet de transformer un XML en source en autre XML en sortie.

    Il est vrai que XSL n'est pas tres abordable au debut, mais bon je voulais juste le preciser.

    Bon courage.

    Angelo

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    Oui je savais mais voilà je pense que je serais plus rapide à traiter çà en java avec les api xml.

    le xsl je ne connais pas très bien et puis pour faire les traitements que je vais devoir faire ensuite çà va être chaud d'acquérir toutes les subtilités du xsl.

    merci

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    Citation Envoyé par guigui5931 Voir le message
    ...il faudrait que tu utilise la méthode getAttributes() qui permet de récupérer les attributs et les valeurs de ces attributs pour un Node...
    Bonjour,

    la méthode getAttributes() renvoie un objet NamedNodeMap.
    Cet objet vaut null si la méthode est appliquée sur le document. Si elle est appliquée sur un noeud je recéupère bien un objet NamedNodeMap. Mais aucunes de ces propriétés ou méthodes ne semble pourvoir me donner ce que je veux. A savoir l'identification de l'ensemble comme #1-TITRE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <paragraph stylename="#1-TITRE"><TEXT>toto</TEXT><paragraph>

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    Je suis en train de regarder du côté d'XPATH...

  9. #9
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Sinon tu peux rechercher dans la FAQ concernant DOM il y a un exemple sur comment parcourir un arbre DOM et récupérer les différents éléments. L'article est ici

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    Citation Envoyé par guigui5931 Voir le message
    Sinon tu peux rechercher dans la FAQ concernant DOM il y a un exemple sur comment parcourir un arbre DOM et récupérer les différents éléments. L'article est ici
    Oui j'ai parcouru tous les exemples de la faq xml/java.
    Dis moi si je me trompe, mais cet exemple ne permet de récupérer les nœuds comme ci dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <paragraph styleName="#1-TITRE"><TEXT>56464646546</TEXT><paragraph>
    en spécifiant 1-TITRE je veux recupérérer 56464646546
    j'ai aussi besoin de tester si stylename = #1-TITRE alors ->> traitement.

    Et çà j'ai pas trouvé dans les exemples avec le DOM et mes diverses manipulations de code n'ont pas été concluantes. Par contre, XPATH a l'air d'être tout indiqué. J'ai trouvé ceci http://zedros.developpez.com/tutoriels/java/xml/xpath/

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Par défaut
    J'ai réussi à faire ce que je voulais avec XPATH et les exemples présents sur Developpez.com

    merci

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

Discussions similaires

  1. [XSD] Comment transformer un fichier xml en fichier xsd (java)
    Par Invité dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/03/2008, 11h21
  2. Réponses: 4
    Dernier message: 23/06/2005, 12h44
  3. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  4. [DOM] Ecriture d'un fichier XML en java
    Par fidififouille dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 12/05/2004, 09h32
  5. [DOM] est ce qu'on peut créer un fichier xml en java ?
    Par miloud dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 21/01/2004, 10h40

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