Xerces external-location et jar
Le
François-Xavier GENDRIN
Bonjour,
Je suis en train de développer une application qui manipule du XML. Nous
nous assurons de la cohérence du xml grâce à un xsd. Au final cette
application sera dans un jar et le fichier xsd aussi. La seule
information que l'on dispose est le chemin relatif vers le xsd. Mais
xerces pour l'external location (namespace + file) demande ne prends pas
le chemin relatif (à moins que l'on me dise comment) mais les chemins
abolus.
J'ai essayé différentes façons d'opérer afin d'avoir ce chemin absolu et
j'obtiens finalement quelque chose que de nombreux forums conseils
d'utiliser :
jar:file:/P:/cheminversjar/nomdujar.jar!/cheminrelatif/nomduxsd.xsd
Mais xerces fait la sourde oreille et continue à me dire que le xml est
incorrect.
Note : j'ai déjà testé mon xsd en dehors du jar ça marche, donc le xsd
est hors d'état. De même pour mon code.
Merci d'avance.
Je suis en train de développer une application qui manipule du XML. Nous
nous assurons de la cohérence du xml grâce à un xsd. Au final cette
application sera dans un jar et le fichier xsd aussi. La seule
information que l'on dispose est le chemin relatif vers le xsd. Mais
xerces pour l'external location (namespace + file) demande ne prends pas
le chemin relatif (à moins que l'on me dise comment) mais les chemins
abolus.
J'ai essayé différentes façons d'opérer afin d'avoir ce chemin absolu et
j'obtiens finalement quelque chose que de nombreux forums conseils
d'utiliser :
jar:file:/P:/cheminversjar/nomdujar.jar!/cheminrelatif/nomduxsd.xsd
Mais xerces fait la sourde oreille et continue à me dire que le xml est
incorrect.
Note : j'ai déjà testé mon xsd en dehors du jar ça marche, donc le xsd
est hors d'état. De même pour mon code.
Merci d'avance.

Poser une question

schemaLocation.
Mais de valider ton xml par un schema placé dans ton jar et de le
récuperer via un getResourceAsStream.
Regarde le package javax.xml.validation c'est du jaxp 1.3 et xerces à
partir de 2.7.1 l'implémente.
SchemaFactory te permet de construire un Schema (c thread safe donc pas
besoin de reparser à chaque fois).
Apres un objet Validator est voili.
Sinon voir aussi ici
http://java.sun.com/j2ee/1.4/docs/t...ml#wp90294
--
O
j'ai finalement utilisé ceci :
URL url = getClass().getClassLoader().getResource(xsdFile);
String schemaUrl = url.toExternalForm();
parser_ = new SAXParser();
parser_.setProperty(XmlConstant.EXTERNAL_SCHEMA_LOCATION, nameSpace
+ " " + schemaUrl);