:hello:
J'ai un problème de parsing avec Sax : je ne sais pas trop pourquoi mais il arrive (très rarement) que certaines données soient tronquées.
Voici un bout de fichier XML que je parse :
Ici, il me récupère mal la valeur de order_date : en fait il y a un décalage des offsets dans la méthode characters de l'implémentation du ContentHandler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <doCaptureRequest date="20090323 19:02:44" sequence="2033"> <payment> <message>WEB</message> <language>FR</language> <order_date>20090323</order_date> </payment> </doCaptureRequest>
S'il y a beaucoup de données à traiter, il se plante (toujours au même endroit). En pratique, il va tronquer le order_date précédent (identique, donc 2009032 au lieu de 20090323) et mettre le reste dans le order_date courant (soit "3"). Le fichier XML est correct, si je mets les lignes incriminées à un autre endroit du fichier, ça passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public void characters(char[] ch, int start, int end) throws SAXException { String data = (new String(ch, start, end)).trim();
De quoi ça peut venir ? Comment résoudre ce problème, car là j'ai pu voir l'erreur car je parse la date avec un SimpleDateFormat, mais dans le cas de données textuelles, je ne pourrai même pas savoir si elles sont correctes...
Merci de votre aide !
Partager