[XML]EntityResolver / Validation DTD fourni dans le jar
Bonjour,
Je souhaite valider un fichier xml (fournit par un serveur), j'ai la DTD tout marche ok. Sauf lorsque je veux faire un jar et donc valider le XML par la DTD contenu dans le jar. J'ai evidemment fait une recherche et j'ai trouvé la solution EntityResolver. Je l'ai implémenter mais lors de la validation il chercher toujours ma DTD dans le repertoire courant :s
Voici mon code :
Code:
1 2 3 4 5 6 7
| public class MyEntityResolver implements EntityResolver{
public InputSource resolveEntity(String publicid, String sysid)
{
System.out.println("Apl de resolveEntity "+ getClass().getResource("/Omniloc_SLIA.DTD").getPath());
return new InputSource(getClass().getResourceAsStream("/Omniloc_SLIA.DTD"));
}
} |
Le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Document doc=new Document();
SAXBuilder sxb = new SAXBuilder();
StringReader strReader=new StringReader(xmlString);
try
{
sxb.setEntityResolver(new MyEntityResolver());
doc = sxb.build(strReader);
} catch (JDOMException saxe)
{
saxe.printStackTrace(System.err);
throw new OmnilocException(OmnilocException.XMLFORMAT_ERROR);
}
catch (IOException io)
{
io.printStackTrace(System.out);
System.out.println("IMPOSSIBLE DE PARSER LE StringReader");
} |
L'erreur que ca declenche
Code:
1 2 3 4 5 6 7 8 9
| Apl de resolveEntity file:/C:/Services/mmsmap.jar!/Omniloc_SLIA.DTD
Avant le return
java.io.FileNotFoundException: C:\Documents and Settings\juzi8222\Omniloc_SLIA.D
TD (Le fichier spÚcifiÚ est introuvable)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection...
.java:70) |
Apparemment l'EntityResolver est bien en place mais il cherche tout de même le fichier local ...
Voici le fichier XML au cas où :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Omniloc : CONNEXION ETABLIE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE omniloc SYSTEM "Omniloc_SLIA.DTD">
<omniloc>
<hdr>
<client>
<id>ammasis</id>
<pwd>6436</pwd>
</client>
</hdr>
<slia>
<pos>
<msid>0682576517</msid>
<pd>
<time utc_off="+0200">20060712140917</time>
<address>
<number></number>
<way>Boulevard des Fr?res Voisin</way>
<postalcode>92130</postalcode>
<city>Issy-les-Moulineaux</city>
</address>
<shape>
<CircularArcArea>
<coord>
<X>484940N</X>
<Y>0021614E</Y>
</coord>
<inRadius>0</inRadius>
<outRadius>353</outRadius>
<startAngle>0</startAngle>
<stopAngle>360</stopAngle>
</CircularArcArea>
</shape>
<lev_conf>100</lev_conf>
</pd>
</pos>
</slia>
</omniloc> |
Merci d avance
Julie.