Bonjour,
je parse un fichier XML avec DOM en le validant par rapport à un Schéma. Je n'ai aucun problème pour la validation, mais j'aimerais accéder aux information de post-validation (PSVI).
J'ai copié depuis l'exemple de la documentation Xerces:
Use the http://apache.org/xml/properties/dom...ent-class-name property to set org.apache.xerces.dom.PSVIDocumentImpl as the implementation of the org.w3c.dom.Document interface. In the resulting DOM tree, you may cast org.w3c.dom.Element to the org.apache.xerces.xs.ElementPSVI and org.w3c.dom.Attr to the org.apache.xerces.xs.AttributePSVI.
Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Document document = parser.getDocument(); Element root = document.getDocumentElement(); // obtenir le PSVI de l'élément racine ElementPSVI rootPSVI = (ElementPSVI)root; // obtenir le schéma utilisé pour valider ce document XSModel schema = rootPSVI.getSchemaInformation();
Apres ce code, schema est toujours null. Dans le débugger, je vois que tous les champs concernant le PSVI sont null. Pourtant, la validation a bel et bien lieu, les erreurs en cas d'instance invalide le prouvent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 parser.setFeature("http://xml.org/sax/features/validation", true); parser.setFeature("http://apache.org/xml/features/validation/schema", true); parser.setFeature("http://xml.org/sax/features/namespaces",true) ; parser.setProperty("http://apache.org/xml/properties/dom/document-class-name","org.apache.xerces.dom.PSVIDocumentImpl"); parser.parse(file.toURI().toString()); Document doc = parser.getDocument(); ElementPSVI rootPSVI = (ElementPSVI)doc.getDocumentElement(); XSModel schema = rootPSVI.getSchemaInformation();
Quelqu'un a-t-il déjà utilisé le PSVI avec Xerces et DOM ?
Merci d'avance.
Partager