Bonjour à tous !

Je suis confrontée à un parsing de fichier XML que je fais avec SAX.
SAX se refuse à parser : erreur "org.xml.sax.SAXParseException: Premature end of file."

J'ai donc affiché ce que je parsais et je n'obtenais qu'un très beau fichier xml.
J'ai donc stocké ce fichier dans un file pour voir s'il y avait des bytes en trop...

Et là surprise !! Le fichier est incomplet, le code xml s'arrête en plein milieu ! Ca fait deux jours que j'essaye de voir d'où vient ce problème et très franchement je n'y arrive pas !

Je vous fournis le code :

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
 
InputStream is; //il est rempli par la suite
 
result = new BufferedReader(new InputStreamReader(is)); //C'est ce que je dois traiter
 
String line = null;
 String test = "";
 InputStream in = null;
 
            try {
                while ((line = result.readLine()) != null) {
                    if (!line.equals("")) {  //J'enlève les lignes vides                    
                        test += line + "\n";
                    }
                }
            } catch (IOException ex) {
                Logger.getLogger(BlastManager.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                in = new ByteArrayInputStream(test.getBytes("UTF-8"));
            } catch (UnsupportedEncodingException ex) {
                Logger.getLogger(BlastManager.class.getName()).log(Level.SEVERE, null, ex);
            }
 
 
  BufferedReader bouf = new BufferedReader(new InputStreamReader(in));
   BufferedWriter writetest = null;
 
            try {
                writetest = new BufferedWriter(new FileWriter("hem.txt"));
            } catch (IOException ex) {
                Logger.getLogger(BlastManager.class.getName()).log(Level.SEVERE, null, ex);
            }
 
           line = null;
            try {
                while ((line = bouf.readLine()) != null) {
                        System.out.println(line); // Ca affiche le fichier XML COMPLET
                        writetest.write(line); // Créé un fichier avec le fichier XML INCOMPLET !!
                }
            } catch (IOException ex) {
                Logger.getLogger(BlastManager.class.getName()).log(Level.SEVERE, null, ex);
            }
 
            BlastParser parser = new BlastParser();
            parser.parse(in);
Voilà... J'espère que vous pourrez m'aider.

A savoir que le premier inputStream ne peux pas passer dans le parser, c'est une erreur interne au code BlastParser qui utilise la librairie Biojava, il faudrait que je corrige la librairie, j'ai un peu la flemme maintenant.

Merci de votre temps