Salut,
Tu pourrais essayer avec ça (code incomplet, copié depuis un projet):
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
if (mode == BI_MODE) {
fis = new FileInputStream(new File(biXmlFile));
} else {
fis = new FileInputStream(new File(cancelXmlFile));
}
bis = new BufferedInputStream(fis);
byte[] bytes = new byte[bis.available()];
bis.read(bytes);
String xmlStr = new String(bytes, "UTF-8");
SAXBuilder builder = new SAXBuilder();
builder.setValidation(true);
builder.setIgnoringElementContentWhitespace(true);
builder.setFeature("
http://apache.org/xml/features/validation/schema", true);
builder.setFeature("
http://apache.org/xml/features/validation/schema-full-checking", true);
// if (mode == BI_MODE) {
// builder.setProperty("
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", biXsdFile);
// } else {
// builder
// .setProperty("
http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", cancelXsdFile);
// }
builder.build(new StringReader(xmlStr));
Lors de l'appel builder.build() il y a bel et bien une vérification de l'XML par rapport au schéma et tu peux catcher l'exception et jouer avec.
Suis désolé, mais je dois m'en aller, du coup je n'ai pas eu le temps de poster un code plus clair. En tout cas, tu as les méthodes à utiliser pour faire un enable/desable de la vérification par rapport à l'XML-Schema. J'utilise jdom (le builder est org.jdom.SAXBuilder) et Xerces...
A plucheu