IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Validation XML avec un XSD


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Par défaut Validation XML avec un XSD
    Salut à tous,

    J'aimerais savoir si quelqu'un sait comment je pourrais valider (à l'aide d'un XML Schema) un fichier XML.

    Le programme est écrit en C. C'est très simple, une application console... j'ai une string contenant mon XML (par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <personne>
      <nom>Smith</nom>
      <prenom>John</prenom>
      <date_naissance>1967-08-13</date_naissance>
      <address>Rue Le Marthe</address>
      <number>12</number>
    </personne>
    j'aimerais donc... que le programme me valide ce xml avec le schéma suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="personne">
         <xs:complexType>
            <xs:sequence>
               <xs:element name="nom" type="xs:string"/>
               <xs:element name="prenom" type="xs:string"/>
               <xs:element name="date_naissance" type="xs:date"/>
               <xs:element name="address" type="xs:string"/>
               <xs:element name="number" type="xs:integer"/><!--
    		   <xs:element name="Order">
    				<xs:complexType>
    					<xs:attribute name="lang" type="xs:int" use="required"/>
    				</xs:complexType>
    			</xs:element> -->
            </xs:sequence>
         </xs:complexType>
      </xs:element>
    </xs:schema>
    Si j'ai bien suivi ce que j'ai lu sur le net, il y a plusieurs API qui devraient me permettre d'y arriver... libxml2, xerces...

    seulement, je suis nouveau en C et j'ai bcp bcp de mal à trouver un exemple simple qui pourrait m'aider à l'appliquer à mon cas...

    Quelqu'un aurait-il un lien utile? ou quelqu'un pour m'aider?

    Merci d'avance,

    Olivier

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut
    Salut,
    Tout d'abord tu doit inclure la librairie XERCES, (Dans visual menu setting, puis onglet link). Ensuite il faut inclure la DLL dans ton projet
    Voila, un copier coller d'une partie de mon code qui fait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    	//-------------------------------------------------------------
    	// Initialisation de xerces pour la validation des fichiers XML
    	//-------------------------------------------------------------
    	XMLPlatformUtils::Initialize();
     
    	static const XMLCh gLS[] = {chLatin_L, chLatin_S, chNull};
    	DOMCountErrorHandler *errorHandler = new DOMCountErrorHandler();
     
    	DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS);
     
    	DOMBuilder *parser = ((DOMImplementationLS*)impl)->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
     
     
    	parser->setFeature(XMLUni::fgDOMNamespaces, true);
    			parser->setFeature(XMLUni::fgXercesSchema, true);
    	parser->setFeature(XMLUni::fgDOMValidation, true);//Always validate schema
     
    	// enable datatype normalization - default is off
    	parser->setFeature(XMLUni::fgDOMDatatypeNormalization, true);
     
    	parser->setErrorHandler(errorHandler); //Create error handler and install it
     
    	// Chargement du fichier xsd correspondant au fichier xml
    	XMLCh *schLoc = XMLString::transcode( pathXsdAccelio );
    	parser->setFeature( XMLUni::fgXercesUseCachedGrammarInParse, true );
    	parser->loadGrammar( pathXsdAccelio, Grammar::SchemaGrammarType, true );
     
    	// Chargement du fichier xml
    	strcpy( actualFile, tabDdrAccelio[i] );
    	sprintf( pathDdrAccelio, "%s\\%s", repertoireDdr, tabDdrAccelio[i] );
     
     
    	// Verification du fichier XML
    	parser->parseURI( XMLString::transcode( pathDdrAccelio ) );
     
    	//-----------------------------
    	// On libère le parseur Xerces
    	//-----------------------------
    	XMLPlatformUtils::Terminate();

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Par défaut plus d'infos
    Salut,
    merci pour ta réponse. Mais je t'avoue que je reste un peu perdu lol

    Pourrais-tu m'indiquer comment utiliser la lib Xerces?

    En fait, à la base, j'utilise pas Visual... j'ai tout fait manuellement en utilisant notepad et mingw pour compiler.

    Des idées?

    Merci encore!

    olo

Discussions similaires

  1. [XSD] Validation xml avec un xsd automatique
    Par Tora21 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 01/07/2011, 14h37
  2. Réponses: 1
    Dernier message: 20/04/2010, 16h41
  3. [XSD] Validation XML avec un XSD
    Par pjmorce dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 21/01/2010, 10h20
  4. [XSD] [Xerces-J 1.4.4] Validation XML avec schéma XSD
    Par g_rare dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 08/04/2008, 16h40
  5. [XSD][xerces] validation xml avec un xsd
    Par chand_bing dans le forum Valider
    Réponses: 2
    Dernier message: 05/02/2004, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo