mardi 6 mars 2012

[JAVA] JDOM - Ne pas parser un XML

Bonjour,

Dans le cas où on utilise JDOM pour parser un fichier XML en java et que ce fichier XML contient une balise doctype  :

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

Pour parser ce XML, on commence comme ceci :

SAXBuilder sxb = new SAXBuilder();
try{
       document = sxb.build(strutsConfig);
}
catch (Exception e)
{
       System.out.println(e.getMessage());
}

Le problème est lorsque l'on travaille en local ( sans accès à internet ), la validation du XML va échouer car il n'arrivera pas à atteindre l'URL contenue dans le doctype :http://struts.apache.org/dtds/struts-config_1_2.dtd
Et on obtiendra une erreur dans ce genre là : Connection timed out: connect

Dans ce cas là, on peut indiquer à JDOM de ne pas vérifier le XML :

SAXBuilder sxb = new SAXBuilder();
sxb.setValidation(false);
sxb.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
try{
       document = sxb.build(strutsConfig);
}
catch (Exception e)
{
       System.out.println(e.getMessage());
}

Et maintenant ça marche.