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

Entrée/Sortie Java Discussion :

Convertion fichier XML to CSV Java


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut Convertion fichier XML to CSV Java
    Bonjour,

    J'ai fait un petit programme Java comme ceci afin de convertir un fichier.xml en fichier.csv .

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
        //lecture du fichier SHI.xml
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new File("C:\\Users\\Maintenance\\int_EGO\\SHI\\SHI.xml"));
            //Rechercher chaque code commande dans les champs "NUMXCVE"
            document.getDocumentElement().normalize();
            NodeList NUMXCVEListe = document.getElementsByTagName("NUMXCVE");
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");  
            LocalDateTime now = LocalDateTime.now();  
     
            //Rechercher chaque ligne quantité dans les champs "Quantite"
            //NodeList REFXARTListe = document.getElementsByTagName("REFXART");
            NodeList QuantiteListe = document.getElementsByTagName("Quantite");
            NodeList NLIXCVLListe = document.getElementsByTagName("NLIXCVL");
            NodeList TRCXCVLListe = document.getElementsByTagName("TRCXCVL");
            NodeList REFXCVEListe = document.getElementsByTagName("REFXCVE");
            //créer le fichier SHI.csv
            FileWriter file = new FileWriter("C:\\Users\\Maintenance\\int_EGO\\SHI\\SHI.csv");
            //Ajoute de l'entete dans un tableau et le fichier csv
            List<Object> data = new ArrayList<>();
            String[] entete = {
                    "Document - N° document",
                    "Document - BL EGO",
                    "Document - Date",
                    "Document - Code client",
                    "Document - Nom du client",
                    "Ligne - Code article",
                    "Ligne - Quantité",
                    "Ligne - % remise",
                    "Ligne - référence client",
     
            };
            file.append(entete[0]
                    +";"+entete[1]
                            +";"+entete[2]
                                    +";"+entete[3]
                                            +";"+entete[4]
                                                    +";"+entete[5]
                                                            +";"+entete[6]
                                                                    +";"+entete[7]
                                                                            +";"+entete[8]
                                                                                    +";"+entete[9]
                                                                                            +"\n");
     
            System.out.println(entete[0]);
            System.out.println(entete[5]);
            data.add(entete);
    Mais lors de l'exécution de mon programme.

    Mon fichier.csv est vide ?

    Avez-vous des solutions ?

    Merci d'avance pour vos réponses

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Vu que le FileWriter n'est pas fermé, ça semble cohérent.
    Il faudrait utiliser la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    try
    (FileWriter file = new FileWriter("C:\\Users\\Maintenance\\int_EGO\\SHI\\SHI.csv");)
    {
        // le code d'utilisation de file
    }
    catch (Exception e)
    {
       // Traitement si besoin de l'exception
    }

  3. #3
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 329
    Points : 443
    Points
    443
    Par défaut
    Bonjour,

    Vous ne fermez pas le file. Par ailleurs la ligne data.add(entete); n'aura pas d'incidence sur le contenu de votre fichier.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    Le "file.append" est fermé à la ligne 42 après le " \n);"

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Et alors... l'instance "file" n'est pas fermée et c'est elle qui compte.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    Dans ce cas comment le fermer ?

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Hmmm, l'exemple au-dessus, celui qui dit "Il faudrait utiliser la forme" suivi d'un exemple de code.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    J'ai essayé mais le programme produit le même résultat.

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Fais voir le code mis à jour.

    Et pendant qu'on y est, dis-nous comment tu sais que le fichier produit est vide.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    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
    28
    29
    30
    31
    32
    try
    		(FileWriter file = new FileWriter("C:\\Users\\Maintenance\\int_EGO\\SHI\\SHI.csv");)
    		{
    		//Ajoute de l'entete dans un tableau et le fichier csv
    		List<Object> data = new ArrayList<>();
    		String[] entete = {
    				"Document - N° document",
    				"Document - BL EGO",
    				"Document - Date",
    				"Document - Code client",
    				"Document - Nom du client",
    				"Ligne - Code article",
    				"Ligne - Quantité",
    				"Ligne - % remise unitaire cumulé",
    				"Ligne - référence client",
     
    		};
    		file.append(entete[0]
    				+";"+entete[1]
    						+";"+entete[2]
    								+";"+entete[3]
    										+";"+entete[4]
    												+";"+entete[5]
    														+";"+entete[6]
    																+";"+entete[7]
    																        +";"+entete[8]
    																        		+";"+entete[9]
    																        				+"\n");
     
    		System.out.println(entete[0]);
    		System.out.println(entete[5]);
    		data.add(entete);
    Je sais que mon fichier est vide car mon programme le met dans un de mes dossiers.
    Le fichier apparaît mais vide...

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Patience, patience.

    Comment est-ce que tu sais que, ce fichier qui apparaît, est vide ?

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    je l'ouvre et il apparaît mais vide...

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Donc t'as vraiment pas envie de donner des détails, très bien. C'est vrai que c'est pas toi qui as besoin d'aide.

    - De quelle manière t'y es-tu pris pour être 100% certain que le fichier que tu ouvres, c'est C:\Users\Maintenance\int_EGO\SHI\SHI.csv ?
    - Quelle est la taille en octets de ce fichier ?
    - Si tu supprimes ce fichier et que tu relances le programme, il réapparaît ?

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    Le programme l'exporte dans C:\Users\Maintenance\int_EGO\SHI\SHI.csv donc je vois si le fichier est vide en l'ouvrant.

    La taille du fichier est de O ko.

    Lorsque je supprime le fichier et que je relance le programme.

    Le programme me recréé un fichier vide.

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Eh ben j'avais loupé mon copier/coller. Là j'avoue je sais pas comment j'ai fait mon compte.

    Mais bref, maintenant on a l'explication:

    ton tableau entete contient 9 éléments.
    Ça lui fait donc des indices valides de 0 à 8, pas de 0 à 9, puisque l'indice 0 compte pour un.
    A cause de ça, entete[9] crashe l'exécution.

    On peut se demander ce que ton programme contient pour qu'il n'y ait pas un message d'erreur évident qui s'affiche pour le signaler.

    On pourra aussi signaler que tu pourrais faire une boucle sur ton tableau entete, plutôt que de mentionner entete[0] à entete[8].

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2022
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2022
    Messages : 72
    Points : 37
    Points
    37
    Par défaut
    D'accord je vais essayer de supprimer l'entete[9] et je te refais un retour.

Discussions similaires

  1. sed et awk pour transformation d'un fichier XML en CSV
    Par bstages2000 dans le forum Linux
    Réponses: 4
    Dernier message: 02/03/2008, 17h19
  2. [DOM] [Débutant(e)] écrire sur un fichier XML à partir de java
    Par Samanta dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/02/2008, 11h13
  3. Comment importer un fichier xml ou csv dans une table paradox ?
    Par pierrot67 dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/09/2007, 15h35
  4. Convertion fichier excel en CSV
    Par ceaser dans le forum Excel
    Réponses: 1
    Dernier message: 23/05/2007, 14h56
  5. Comment lire des données d'un fichier XML à partir de java
    Par kamaldev dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 25/08/2006, 19h29

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