rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[Java]Validation xml par un schema xsd

Posté par lewis, le jeudi 20 décembre 2007 à 16:52:43
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 ;)
Répondre à lewis  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lewis, le vendredi 21 décembre 2007 à 10:50:31
Personne pour m'aider ?
Répondre à lewis

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le mercredi 5 mars 2008 à 14:20:12
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(myCurrent­InputFile)));


En espérant que ça puisse un jour aider.

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
Répondre à kij_82

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 ramirva, le vendredi 11 juillet 2008 à 16:04:00
SLT TT LE MONDE

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

MERCI DE ME DONNER UNE IDEE
Répondre à ramirva