problème avec le parseur SAX
Bonjour,
j'ai un petit souci avec le parseur SAX. Je développe une appli WebService dans laquelle j'ai besoin de parser un fichier XML. Quand je teste mon appli en local, tout marche très bien. Seulement quand je l'installe sur une autre machine, l'appli se bloque sur le parsing XML sans que je sache pourquoi.
Est-ce que quelqu'un a une idée de ce qui pourrait bloquer le parsing en SAX d'un fichier XML ?
Le code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
SAXParserFactory fabrique = SAXParserFactory.newInstance();
fabrique.setNamespaceAware(true);
// création d'un parseur SAX
SAXParser parseur = fabrique.newSAXParser();
//récupération du HttpServlet pour pouvoir lire le fichier validation.xml
MessageContext ctx = MessageContext.getCurrentContext();
HttpServlet serv = (HttpServlet)ctx.getProperty("transport.http.servlet");
// lecture du fichier XML avec un DefaultHandler
InputStream is = serv.getServletContext().getResourceAsStream(VALIDATION_FILE);
ValidationHandler gestionnaire = new ValidationHandler();
parseur.parse(is, gestionnaire); |
La classe ValidationHandler hérite de DefaultHandler et redéfinit startElement et endElement.
A l'exécution sur l'autre machine, l'appli ne rentre même pas une fois dans le startElement.
Je ne sais pas si ca peut venir de certains jar que j'aurais pu oublier et qui sont par défaut sur ma machine. Mais je n'ai pas de plantage ou de ClassNotFoundException qui me revient.
Les classes SAXParser et SAXParserFactory viennent du package javax.xml.parsers.
Merci d'avance.
comment ne pas parser <!DOCTYPE ?
Après quelques séries de test, j'ai trouvé la ligne qui bloquait le parser. C'est celle-ci :
Code:
1 2 3 4
|
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> |
Il doit essayer d'aller se connecter à l'adresse de la dtd et il n'y arrive pas.
Est-ce que quelqu'un sait comment empêcher SAX de parser cette ligne ?
Merci d'avance