Validation xml a l'aide de schema xml en java

Fred -  
 Lolo -
Salut à tous,
j'ai un problème probablement simple, mais il m'est bloquant.
Je voudrais un code (une classe) java qui pemette de valider un document xml à l'aide d'un schema xml.
Merci d'avance pour toute aide
A voir également:

6 réponses

Fred
 
Rebonjour à tous !
je vous jure que je suis veritablement planté depuis quelques temps. Mais la j'ai quand même obtenu un debut de solution qui utilise JDOM pour parser, sauf que la je ne pas encore situer les sources des erreurs dans le document. Or c'est precisément cela qui m'interesse, car j'aimerais rediriger celles ci vers une sortie (fichier).
Merci pour toute aide.
1
Mayada
 
Bonjour :)
Lire un fichier XML ???
En fait il y a un API qui s'appele JAXB: côté technique je veux dire que JAXB fournit un outil qui analyse un schéma XML
et génère à partir de ce dernier un ensemble de classes qui vont encapsuler les traitements de manipulation du document. Résultat immédiat et miraculeux :)!! est que toutes les manip se font au travers d'objets java.
COMMENT?? ça restera un mystère !!! non je plaisante c'est pratique et très intéressant de percer ce mystère toi seul sans aide.
Bon courage ty arriveras
1
celcas
 
Bonjour,

je suis nulle en info et j'ai un fichier XML SCHEMA à ouvrir...Comment faire? Quel logiciel faut-il?
Merci d'avance
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Tu peux essayer XMLSpy d'Altova, il est excellent (mais cher)... En tout cas version d'essai dispo.
0
Lolo
 
Je trouve personnellement que le plus basique des éditeurs de texte est vraiment très bien pour éditer des xsd
0
ecor6633 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   5
 
Pour ce qui est de la validation, je sais par expérience que les schémas c'était pas trop bien supporté quand j'ai testé l'année passée mais que Xerces (le parseur opensource) est capable de le faire.
Il faut simplement une fois que tu as ta factory que tu fasse un set... je sais plus quoi pour lui dire explicitement que tu veux qu'il valide le schéma évidemment, il va valider avec le schéma qui est déclaré dans le document XML. Je ne sais pas exactement comment faire pour valider à partir d'un schéma externe différent mais ça doit être faisable.

celcas, j'utilise eclipse avec les webtools, une vraie usine à gaz pour une simple édition de fichier mais avec validation et éditeur graphique, etc...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
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
0
cocochanel
 
salut,
pour valider un document XML en java voilà:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
salut
0