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 :

Problème de fichier XML


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Par défaut Problème de fichier XML
    bonjour chers membres

    Je suis nouveau sur ce forum, malgré que je connaisse ce site depuis ma première année de BTS.
    Mais bon voila, parfois les FAQ et les copains ne suffisent pas pour vous dépatouillez d’un programme capricieux. Je remercie la communauté de ce site au passage, on dit jamais assez merci car vous m’avez sauvé de gros problème plus d’une fois. (du C, C++, C#, Java, en passant par l’installation d’un serveur SVN et bien d’autre …)

    J’explique mon problème on ma demandé de faire une conversion d’un fichier de contenu un XML en un fichier de contenu et de graphisme HTML, donc voila pour l’histoire.
    Le truc super logique déjà. Donc j’ai 6 fichiers XMl qu’il faut que je parcours pour avoir les fameuses balises de contenu(Node).

    Voila mon code (vraiment moche mais temp que ca marche)
    Je suis pas super douer en java donc pas de taunt svp.


    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
     
    public class CreationFichier {
     
        FileWriter writer;
        public boolean fichierExiste(String fichier){
     
     
            File toto = new File("D:/"+ fichier +".txt");
            if(toto.exists() == true)
            {
     
                  return true;
            }
            else{
     
            return false;
     
        }
    }
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    public class OuvertureXmlDOM {
     
     
     
    	public static void main(String[] args){
     
                        String titre = "", contenu ="" , nomBalise ="", user="" , nomprenom ="", temp="";
                        short type = 0;
                        int index = 0 ,i,nbtag,j;
                        int nombreNoeud;
                        int[] tab = new int[300];
                        String name ="TITRE", name2 = "CORPS", name3="CODE_REDACTEUR";
                        NodeList listdenoeud2;
                        NodeList listdesnoeud;
                        NodeList listdenoeud3;
                        Node node1;
                        Node node2;
                        Node node3;
                        FileWriter writer2 = null;
                        FileWriter writer = null;
                        Utilisateurs utilisateur = new Utilisateurs();
                        CreationFichier txt = new CreationFichier();
     
     
    try{
     
     
                            // création d'une fabrique de documents
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
     
    			// création d'un constructeur de documents
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
     
    			// lecture du contenu d'un fichier XML avec DOM
                            //File xml = new File("D:/UTILISATEUR.xml");
    			File xml = new File("D:/ARTICLE.xml");
    			Document document = constructeur.parse(xml);
     
                                //On prend l'arbre racine de l'élément
                            Element racine = document.getDocumentElement();//traitement du document
                                //
                            listdesnoeud = racine.getElementsByTagName(name);
                            nombreNoeud =listdesnoeud.getLength();
                            listdenoeud2 = racine.getElementsByTagName(name2);
                            listdenoeud3 = racine.getElementsByTagName(name3);
                            nbtag = listdenoeud3.getLength();
     
     
     
     
     
     
                                for(i=0; i<listdesnoeud.getLength();i++)
                                {
     
                            titre = listdesnoeud.item(i).getTextContent();
     
                            nomBalise = listdesnoeud.item(i).getNodeName();
                            contenu = listdenoeud2.item(i).getTextContent();
                            user =  listdenoeud3.item(i).getTextContent();
     
                                //stoque le nom et le prénom de l'utilisateur
                            nomprenom = utilisateur.getusers(user);
                                if(txt.fichierExiste(nomprenom) == true)
                                {
                                    writer2 = new FileWriter("D:/" + nomprenom + ".txt", true);
                                    writer2.write("<br />     <br /><p> <h1>         ");
                                    writer2.write(titre, 0, titre.length());
                                    writer2.write("</h1> </p> <br />     <br /> <p>         ");
                                    writer2.write(contenu,0,contenu.length());
                                    writer2.write("</p> <br />     <br />          ");
                                    writer2.close();
                                }
                                else{
     
                            writer2 = new FileWriter("D:/"+ nomprenom + ".txt");
                            writer2.write("<br />     <br /><p> <h1>         ");
                            writer2.write(titre, 0, titre.length());
                            writer2.write("</h1> </p> <br />     <br /> <p>  ");
                            writer2.write(contenu,0,contenu.length());
                            writer2.write("</p> <br />     <br />          ");
                            writer2.close();
                                }
     
                                }
     
     
    		}catch(ParserConfigurationException pce){
    			System.out.println("Erreur de configuration du parseur DOM");
    			System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
    		}catch(SAXException se){
    			System.out.println("Erreur lors du parsing du document");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    		}catch(IOException ioe){
    			System.out.println("Erreur d'entrée/sortie");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    		}
    	}
    }
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    public class Utilisateurs {
     
        String name;
        NodeList listId;
        NodeList listNomUser;
        NodeList listPrenomUser;
        String code;
        String nom, prenom;
        String nompers ;
     
        public String getusers(String id)
        {int i,j, test1, test2;
            try{
     
              // création d'une fabrique de documents
    	DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
     
    	 // création d'un constructeur de documents
    	DocumentBuilder constructeur = fabrique.newDocumentBuilder();
     
    	// lecture du contenu d'un fichier XML avec DOM
     
    			File xml = new File("D:/UTILISATEUR.xml");
    			Document document = constructeur.parse(xml);
     
                                //On prend l'arbre racine de l'élément
                            Element racine = document.getDocumentElement();//traitement du document
                            code = "CODE";
                            nom = "NOM";
                            prenom = "PRENOM";
                            listId = racine.getElementsByTagName(code);
                            listNomUser = racine.getElementsByTagName(nom);
                            listPrenomUser = racine.getElementsByTagName(prenom);
     
     
                             for(i=0;i<listId.getLength();i++)
                             {if(listId.item(i).getTextContent().equals(id) == true)
                            {
                                   nompers = listNomUser.item(i).getTextContent() +"_"+ listPrenomUser.item(i).getTextContent();
     
     
     
                                   return nompers;
                            }
     
                                }
     
            	}catch(ParserConfigurationException pce){
    			System.out.println("Erreur de configuration du parseur DOM");
    			System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
    		}catch(SAXException se){
    			System.out.println("Erreur lors du parsing du document");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    		}catch(IOException ioe){
    			System.out.println("Erreur d'entrée/sortie");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    		}
     
     
        return nompers;
        }
     
    }
    Il me construit bien les fichier avec les noms de l'utilisateur avec les articles dedans mais a un moment aprés 3-4 seconde :

    «*Erreur d’entrée/sortie lors de l’appel à constructeur.parse(XML)*»

    Si il n’arrivait pas à ouvrir le document XMl avec DOM ca me ferais une erreur tout de suite. Il n'irait pas créer les fichier txt et écrire dedans.
    Donc bon, la je ne comprend pas, si quelqu'un pouvais m'expliquer un peu ce qui cloche.
    Merci de m'avoir lu.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Malatok Voir le message
    Si il n’arrivait pas à ouvrir le document XMl avec DOM ca me ferais une erreur tout de suite. Il n'irait pas créer les fichier txt et écrire dedans.
    De ce que j'ai vu, sans doute pas, non.

    Le problème est dans ta gestion des Exception. Chaque fois que tu chopes une IOException, tu affiches, «*Erreur d’entrée/sortie lors de l’appel à constructeur.parse(XML)*», sans te demander si c'est à ce moment-là que l'IOException est arrivée.

    Pourtant une IOException peut arriver dès qu'on fait des I/O, sur fichier, sur réseau, en sockets internes, en mapping et sûrement d'autres.
    Notamment, quand tu écris un fichier ça peut très bien arriver. Et je pense même qu'il y a plus de chances. Par exemple, tu devrais vérifier si tu peux vraiment créer des fichiers aux noms demandés, et s'il n'y en a pas déjà un de ce nom en lecture seule.

    C'est pas comme ça qu'on traite des Exceptions.
    On ne fait pas de println() dans un catch. On peut faire ioe.printStackTrace(); ce qui affichera le message explicatif de l'Exception, ainsi que là où elle est arrivée, la stack d'appel qui y a mené, l'Exception cause, la stack de la cause, etc.
    On appelle ça une StackTrace et c'est super utile. Si l'erreur n'est pas 100% ignorable, alors on ne laisse jamais perdre sa stacktrace, pour aucune raison que ce soit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Par défaut
    Merci beaucoup Thelvin,
    Je vais vérifier, merci encore pour ta réponse .

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

Discussions similaires

  1. Problème chargement fichier XML vers un DataSet
    Par verbal34 dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 11/07/2010, 23h26
  2. Problème en fichier XML
    Par soumti84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 23
    Dernier message: 18/04/2009, 17h12
  3. Problème écriture fichier xml
    Par ludo24 dans le forum ASP
    Réponses: 23
    Dernier message: 23/06/2008, 11h48
  4. [C#] Problème chargement fichier xml dans treeview
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2006, 14h10
  5. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11

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