Bonjour
Pour un projet sur lequel je travail, je doit pouvoir effectuer les opérations suivantes :
- Charger un modèle de fichier XML (c'est un fichier XML)
- Effectuer quelques modifications
- Pouvoir l'enregistrer à un endroit donné.
Le problème que je rencontre vient du fait que mon application (sous Windows) manipule un fichier qui doit être utilisé sous LINUX, et dont la DTD doit être en chemin absolu. Cette DTD doit être absolument être présente dans le fichier générer, conformément à ce qui est présent dans le modèle XML. Je ne peux pas préjuger du contenu de ce modèle.
Si j'effectue les opérations suivantes :
le parser se plaint comme quoi il ne trouve pas la DTD (setValidating(false) n'a pas l'air de faire ce que je souhaite).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(file);
Je peux obtenir un parsing correct en ajoutant ceci :
avant le parse. Oui mais... je perd la DTD lors de la sauvegarde de mon document.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 builder.setEntityResolver(new EntityResolver() { @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { return new InputSource(new java.io.StringReader("")); } });
Voyez vous une solution ?
Partager