[Java]Validation xml par un schema xsd

Fermé
lewis - 20 déc. 2007 à 16:52
 Zora - 6 août 2008 à 16:21
Bonjour,

Je developpe un programme java qui permet de creer un fichier xml. Cependant j'aimerais que ce fichier xml soit valide par rapport à schema xsd pour cela j'ai écris une classe mais qui malheuresement ne fonctionne pas. Je précise que le fichier xml contient des namespaces et qu'il ne contient pas de lien xsi. Voila je poste le code (trouver sur le net et légèrement modifié) pour savoir s'il y a une erreur :

public static boolean validXML(String xmlFile, String xsdFile) {
isValid = true;
System.out.println(xmlFile+" *** "+xsdFile);
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
spf.setValidating(true);
SAXParser sp = spf.newSAXParser();
sp.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
sp.setProperty(JAXP_SCHEMA_SOURCE, xsdFile);
sp.parse(xmlFile, new DefaultHandler(){
public void fatalError(SAXParseException e) {
System.out.println("Erreur de validation XSD - Erreur fatal");
isValid = false;
}
public void error(SAXParseException e) {
System.out.println("Erreur de validation XSD - Erreur");
isValid = false;
}
public void warning(SAXParseException e) {
System.out.println("Erreur de validation XSD - Warning");
isValid = false;
}
});
}catch (SAXException se) {
System.out.println(se);
return false;
}catch (ParserConfigurationException pce){
System.out.println(pce);
return false;
}catch (IOException ioe){
System.out.println(ioe);
return false;
}
return isValid;
}


PS : si vous connaissez une autre solution je suis preneur ;)
A voir également:

3 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
5 mars 2008 à 14:20
Bonjour,

Je sais que ça fait un bail mais ne sais on jamais ^^
J'ai fais le même genre de chose que toi et voici brièvement mon code (qui fonctionne) :
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;

dbfactory.setValidating(true);
// --- Attribution du schéma de validation
dbfactory.setAttribute( JAXP_SCHEMA_LANGUAGE, "http://www.w3.org/2001/XMLSchema" );
// --- Le chemin d'accès à mon fichier xsd se trouve dans un fichier de config
File f = new File( getConfig().getXsdPath() );
dbfactory.setAttribute( JAXP_SCHEMA_SOURCE, f );

db = dbfactory.newDocumentBuilder();
// --- J'ai un error handler pour filtrer certain type d'erreur que je ne considère pas comme de réelles erreurs.
// --- Ce n'est donc pas obligatoire
myHandler = new XmlValiderHandlerManager();
db.setErrorHandler( myHandler );
// --- Entity resolver pour passer outre les messages d'erreur sur les entity connu de mon process
db.setEntityResolver( new NplEntityResolver(getConfig().getRoot()) );

// --- Parsing du fichier xml en entrée
db.parse(new File(myRootDirectory.concat(File.separator).concat(myCurrentInputFile)));


En espérant que ça puisse un jour aider.
5
SLT TT LE MONDE

EN FAITE JE VEUX PARSER UN FICHIER XSD POUR GENERER APRES DES OBJECTS CLASSES

MERCI DE ME DONNER UNE IDEE
1
Bonjour,

Castor le fait tres bien pour toi..

va voir là : http://www.castor.org/

cdt.
0
Personne pour m'aider ?
0