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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 !![]()
Partager