Bonjour.
Je rencontre des difficultés lorsque je tente de parser le fichier XML suivant :
En effet, dans ma méthode characters :
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>
Voici les valeurs de cdata pour les deux lignes (obtenues via debugguer) :
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);
Comment se fait-il que la deuxième ligne ne contienne pas tout le CDATA ?!
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"
Voici le reste de mon code utilisé pour appeler le parseur :
D'avance merci, je sèche là...
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); } } }
Partager