Petit problème assez général :
2 systèmes qui utilisent/parsent les mêmes fichiers .xml
(pour partager la même configuration par exemple)
pour des raisons techniques, le chemin vers les dtd
n'est pas le même depuis les 2 systèmes (points de montages différents, systèmes
hôtes hétérogènes...)
solution porcasse : modifier le xml et virer la référence vers la dtd

ça peut le faire si on est assuré que personne ne modifie ce fichier 'à la main'
solution presque clean : faire en sorte que l'un des 2 systèmes ne tente pas de valider
le fichier (et ne chargera pas la dtd)
il suffit de redéfinir l'EntityResolver du DocumentBuilder like that :
Code:
private static Document getDoc(File f, String docId) throws Exception{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
db.setEntityResolver(new EntityResolver() {
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
if (systemId.contains("foo.dtd")) {
return new InputSource(new StringReader(""));
} else {
return null;
}
}
});
Document doc = db.parse(f);
return doc;
}
source :
http://stackoverflow.com/questions/155101/make-documentbuilder-parse-ignore-dtd-references