Problème de validation XML
Salut,
Pour valider un document XML avec un schéma XML, je me suis inspiré d'un code que l'on peut retrouver un peu partout sur Internet :
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 39 40
| private boolean isXmlConformeAuSchema(InputStream xml, InputStream xsd) {
Schema schema;
DOMSource source;
try {
SchemaFactory schemaFact = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
schema = schemaFact.newSchema(new StreamSource(xsd));
DocumentBuilderFactory builderFact = DocumentBuilderFactory.newInstance();
builderFact.setNamespaceAware(true);
DocumentBuilder builder = builderFact.newDocumentBuilder();
Document document = builder.parse(xml);
source = new DOMSource(document);
} catch (SAXException e) {
System.out.println("Le schéma n'est pas valide : " + e.getMessage());
return false;
} catch (ParserConfigurationException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
System.out.println("Erreur de lecture du schéma : " + e.getMessage());
return false;
}
Validator validator = schema.newValidator();
try {
validator.validate(source);
} catch (SAXException e) {
System.out.println("Le document XML ne respecte pas le schéma : " + e.getMessage());
return false;
} catch (IOException e) {
System.out.println("Erreur de lecture du document XML : " + e.getMessage());
return false;
}
return true;
} |
J'ai testé le validateur :
- Quand le document XML est conforme au schéma, la validation passe ;
- Quand le document XML n'est pas conforme (en changeant le nom d'une balise par exemple), la validation passe quand même.
Savez-vous d'où vient le problème ?
Merci ! :)