Bonjour.

Je rencontre des difficultés lorsque je tente de parser le fichier XML suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?xml version="1.0" encoding="ISO-8859-1"?>
<CONTENU>
<ENR><![CDATA[28/07/2004 23:57:09,024|0|0||21|Lancement du scénario|35|Debut du téléchargement du scénario|0||0|0]]></ENR>
<ENR><![CDATA[28/07/2004 23:57:10,126|0|0||21|Lancement du scénario|33|Fin du téléchargement du scénario|0||0|0]]></ENR>
</CONTENU>
En effet, dans ma méthode characters :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
public void characters(char[] ch, int start, int length) {
         String cdata = new String(ch, start, length);
Voici les valeurs de cdata pour les deux lignes (obtenues via debugguer) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cdata : "28/07/2004 23:57:09,024|0|0||21|Lancement du scénario|35|Debut du téléchargement du scénario|0||0|0"
cdata : "28/07/2004 23:57:10,126|0|0||21|Lance"
Comment se fait-il que la deuxième ligne ne contienne pas tout le CDATA ?!

Voici le reste de mon code utilisé pour appeler le parseur :
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
public class ScenarioXMLParser extends DefaultHandler {
private void parseSAX(File parsedFile) {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            XMLReader xmlReader = spf.newSAXParser().getXMLReader();
 
            xmlReader.setContentHandler(this);
 
            //FileInputStream fis = new FileInputStream(parsedFile);
            //xmlReader.parse(new InputSource(fis));
 
            SAXParser sxp = spf.newSAXParser();
            sxp.parse(parsedFile, this);
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }
 
 
    public void endElement(String namespaceURI, String localName, String qualifiedName) {
        String currentPath = pathToString();
        if (currentPath.equals("CONTENU/ENR")) {
            processRecord();
        }
        path.remove(path.size() - 1);
    }
 
 
    private String pathToString() {
        StringBuffer p = new StringBuffer("");
        for (int i = 0; i < path.size(); i++) {
            p.append(path.get(i));
            if (i < path.size() - 1) {
                p.append('/');
            }
        }
        return p.toString();
    }
 
    private void processRecord() {
        try {
            recordProcessor.process(new ScenarioXMLRecord(headers, champsEnr, fileToParse));
            xmlRecordCount++;
        } catch (ScenarioRecordFormatException e) {
            String msg = "La ligne " + xmlRecordCount + "n'a pas le format attendu! " + e.getMessage();
            for (int i = 0; i < champsEnr.size(); i++) {
                msg+= " " + champsEnr.get(i);
            }
            System.out.println(msg);
            e.printStackTrace();
            Logger.getLogger(ScenarioXMLParser.class.getName()).log(Level.SEVERE, null, e);
        }
    }
}
D'avance merci, je sèche là...