Eviter les erreurs fatales lors d'un parsing
Bonjour,
Voici mon problème : je dois parser des fichiers XML assez gros, décrivant une suite de "documents", chaque documents ayant des informations, etc.
Il se trouve que j'utilise SAX de la manière suivante:
Code:
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
|
XMLReader reader = null;
SAXParser parser = null;
UEMEntityResolver myEntityRes = new UEMEntityResolver(getConfig());
FileInfoObj myFileInfoObj = null;
BasicHandler myBHandler = new BasicHandler(getConfig(), "Cp-500");
final SAXParserFactory factoryP = SAXParserFactory.newInstance();
try{
factoryP.setValidating(false);
parser = factoryP.newSAXParser();
// --- Initialize reader
reader = parser.getXMLReader();
reader.setContentHandler(myBHandler);
// --- Error handler qui récupère les erreurs et les enrichies
reader.setErrorHandler(myBHandler);
reader.setEntityResolver(myEntityRes);
...
reader.parse(...);
}catch(....){
// Traitement des exceptions
} |
Dans l'un de mes fichiers XML d'entrée, sur la donnée de l'un des documents, j'ai cette suite de caractère : (OAM&P);
Mon programme part en Fatal Error avec le message suivant:
Code:
1 2
|
org.xml.sax.SAXParseException: The reference to entity "P" must end with the ';' delimiter. |
J'aimerai savoir s'il y a possibilité de passer outre cette fatal error, à priori non, du moins c'est ce que je vois après avoir tenté ça dans mon error handler, et la javadoc précise qu'il n'est de toute manière pas possible d'empêcher l'arrêt du parser une fois ce type d'erreur levée.
Existe-t-il un autre type de parser, similaire à SAX, mais au sein duquel il est possible de gérer les fatal error ?
En vous remerciant pour votre aide.
Cdlt.