Rechercher : dans
Par :

[Java]Validation xml par un schema xsd

Dernière réponse le 9 jun 2009 à 16:45:47 lewis, le 20 déc 2007 à 16:52:43 
 Signaler ce message aux modérateurs

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 ;)

Meilleures réponses pour « [Java]Validation xml par un schema xsd » dans :
Structure d'un document XML VoirQu'est-ce que le XML? La norme XML en tant que telle doit être vue comme un outil permettant de définir un langage (on dit alors qu'il s'agit d'un métalangage), permettant de créer des documents structurés à l'aide de balises. Une balise est une...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Introduction à XML VoirPrésentation de XML XML (entendez eXtensible Markup Language et traduisez Langage à balises étendu, ou Langage à balises extensible) est en quelque sorte un langage HTML amélioré permettant de définir de nouvelles balises. Il s'agit effectivement...

1

lewis, le 21 déc 2007 à 10:50:31

Personne pour m'aider ?

Répondre à lewis

2

kij_82, le 5 mar 2008 à 14:20:12
  • +2

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.

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

Répondre à kij_82

3

ramirva, le 11 jui 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

4

 Zora, le 6 aoû 2008 à 16:21:36

Bonjour,

Castor le fait tres bien pour toi..

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

cdt.

Répondre à Zora