J’ai un fichier XML (qui fait référence à un DOCTYPE) que je parse avec SAX de la manière suivante :
this.saxHandler = new CompleteSAX();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
// Parse the input
SAXParser saxParser = factory.newSAXParser(); // throws ParserConfigurationException & SAXException
saxParser.parse(new File("config.xml"), saxHandler); // throws FileNotFoundException & IOException & SAXException
Le problème c’est qu’ainsi, dans mon programme, je dois avoir deux fichier, le fichier “config.xml” (normal) mais aussi le “config.dtd”, ce dernier me gène.
Est-il possible de dire à SAX de valider le XML à l’aide d’un DOCTYPE interne ? Genre une String hardcodée dans le programme ?
Salut,
désolé pour le délai je dépile à l’instant.
Plutôt que de “hardcoder” ta DTD, tu met le fichier dtd en ressource dans ton jar, et tu utilise la ressource à partir du ClassLoader courant pour obtenir un IntputStream dessus: le SAXParser accepte d’utiliser un inputStream au lieu d’un “File”.
NimporteQuelleClasse.class.getClassLoader().
getResourceAsStream(fileurl)
Note, tu peux aussi créer un inputStream à partir d’une String si tu veux, mais ça me semble moins correct.
see:
http://java.sun.com/j2se/1.4.2/docs/api/ja…va.lang.String)
Tu peux aussi utilise une DOCTYPE externe en utilisant une URL
deltree > OK, ça semble donc possible finalement Faudra juste que j’arrive à faire un .JAR cette fois-ci
Sans-Nom > Actuellement, j’utilise un DOCTYPE externe (mais pas avec une URL Internet), et c’est ça le problème car ça me fait un fichier en plus…