Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VALIDATION XML AVEC XSD (XMLSCHEMA) POUR DOM ET SAX


Information sur la source

Catégorie :Api Classé sous : xml, schema, valiatin, dom, sax Niveau : Débutant Date de création : 15/05/2005 Vu / téléchargé: 19 148 / 2 008

Note :
8 / 10 - par 9 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Petit code très simple ayant pour but de montrer comment configurer un parser DOM et SAX pour valider vox fichiers XML avec un XSD (XMLSchema).

Bon code
 

Source

  • static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
  • static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
  • static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
  • // Pour DOM
  • DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  • dbf.setIgnoringComments(true);
  • dbf.setNamespaceAware(true);
  • dbf.setValidating(true);
  • dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
  • dbf.setAttribute(JAXP_SCHEMA_SOURCE, new File(xsdFile));
  • // Pour SAX
  • 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);
  • Pour le reste du code : in the zip !
static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";

static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";

static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";

// Pour DOM
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringComments(true);
dbf.setNamespaceAware(true);
dbf.setValidating(true);
dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
dbf.setAttribute(JAXP_SCHEMA_SOURCE, new File(xsdFile));

// Pour SAX
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);

Pour le reste du code : in the zip !

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de mustapha81 le 10/03/2006 03:04:27

il est plein du faute!!!!!!!!!!!!!!!!!

signaler à un administrateur
Commentaire de neodante le 10/03/2006 10:17:02 administrateur CS

Euh, merci de préciser dans un premier temps, deuxièmement il n'y aucunes fautes donc si tu n'arrives à compiler un programme qui utilise la lib standard de Java je ne peux rien pour toi (oui moi énervé ce matin !)

++

signaler à un administrateur
Commentaire de Aquarius28 le 10/07/2006 16:27:17

MErci !

signaler à un administrateur
Commentaire de ouaich82 le 02/05/2007 10:58:55

Super ta classe !! Je développe un petit éditeur xml et elle va beaucoup m'aider !!!

signaler à un administrateur
Commentaire de jasminblanc le 28/07/2007 17:12:20

bonjour

si je veut valider un xml par rapport a deux fichiers xsd est ce que votre source resrte tjs valable
et la doc pour comprendre le source existe elle en français

signaler à un administrateur
Commentaire de 2bhq le 05/02/2008 10:20:45 10/10

Très bon code efficace et simple. Merci

signaler à un administrateur
Commentaire de sdaec le 17/03/2008 10:04:46 8/10

Bonjour,
juste une petite question: dans ton code tu as mis:
db.setErrorHandler(new ErrorHandler() {
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;
}
});

Pourrais tu préciser à quoi correspondent ces différentes erreurs car je n'arrive pas à trouver dans le document "W3C XML 1.0 Recommandation" ce qu'elles veulent dire? Au niveau du déboggage, il est difficile de savoir vraiment à quoi cela correspond.

D'avance merci

signaler à un administrateur
Commentaire de sdaec le 17/03/2008 14:30:24

Re-bonjour

voici l'erreur exacte que j'ai lorsque je lance ton code:

Erreur de validation XSD - Erreur
cvc-datatype-valid.1.2.1: '2008/01/22' is not a valid value for 'dateTime'.
Erreur de validation XSD - Erreur
cvc-type.3.1.3: The value '2008/01/22' of element 'DATE' is not valid.

Saurais tu quel est le bon format de date? :)

Merci

signaler à un administrateur
Commentaire de IoDream le 01/04/2008 16:06:09 8/10

Chez moi les "dbf.setAttribute(..)" ne marchent pas. J'ai dû faire comme ceci (en DOM):
SchemaFactory schFactory = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schFactory.newSchema(XSD_FILE);
dbf.setSchema(schema);

signaler à un administrateur
Commentaire de sdaec le 02/04/2008 11:03:56

Bon en consultant la doc officielle de la W3C le format de date est le suivant AAAA-MM-JJ donc un conseil pour ceux qui utilisent ce code: Respectez à la lettre les standards de la norme. Pour ma part j'ai du revoir toutes mes xsd pour les mettre à la norme et ce fut un gros travail. ;)

Bon courage et encore merci pour tout.

P.S: Attention au version de vos librairies dans vos projets, j'ai du mettre à jour certaines librairies pour que ça fonctionne.

signaler à un administrateur
Commentaire de kyryan le 27/11/2008 11:14:52

Juste pour dire que ton code m'a enlevé une épine du pied alors merci bicou

K^^

signaler à un administrateur
Commentaire de kyryan le 28/11/2008 11:19:52 9/10

Super !
Est ce qu'il y aurait la meme chose pour la validation d'un fichier XMI ?

:))

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

xml vers sql: DOM ou SAX? [ par janolapino ] Bonjour,Je souhaite écrire le contenu d'un fichier xml vers une base mysql. Mon coeur balance entre entre DOM et SAX (mon coeur un peu influenc&# Parser une String contenant du xml avec SAX ... [ par jerooome ] Bonjour à tous, Situation: j'ai un client qui ce connect à un serveur via un socket, et qui lui envoie un flux xml, le serveur recoit cela Valider un XML avec DTD externe en java sous Sax [ par darktonight ] Ben tout est dans le titre, j ai un document xml, une dtd, et j'aimerai le valider sous Sax, j'aimerai que les erreurs soit stokées à part dans un fic Ecrire un document xml en conservant sa dtd [ par mushrooml ] Voila mon probleme:Je recupere un document DOM dont la dtd existe apres parsage d un fichier xml avec dtd associé par un DocumentBuilder. Jusque la pa modifier fichier XML avec SAX [ par joebar3333 ] bonjour,j'aimerai modifier mon fichier XML avec mon parseur SAX, mais je ne sais pas quelles fonctions utiliser. Si quelqu'un sait je suis preneu Ajouter des données dans un fichier XML avec DOM [ par fonkyom ] j'ai ce code mais il ajoute rien, il remplace !merci de m'aidervoici mon xml[QUOTE]<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE éléme eclipse:xml et sax??????? [ par blatifa2008 ] bonjour, j'utilise eclipse dans mon travail qui consiste à parcourir un doc xml avec le parseur sax,mon probleme c'est ou je met mon doc xml (emplacem Créer un XSD (XML Schema) [ par Kroline ] Bonjour tout le monde,Je ne sais pas si qlq pourra m'aider mais je dois générer un XSD (un schema XML) à partir d'un programme Java.J'a [Axis][SOAP/DOM] SOAPHeaderElement.appendChild() => ClassCastException [ par broidsy ] Bonjour, Je suis en train d'essayé de construire des HeaderSOAP personalisés pour des webservices, mais j'ai une erreur de cast lorsque j'ajoute un n DOM [ par selmaensi ] Bonjour,j'essaye de développer un programme en Java eclipse qui manipule un fichiezr XML avec DOM. Quand je fait appel à la méthode "setTextContent("c


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.