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

Bibliothèques Discussion :

Vérifier la validité d'un fichier xml par xsd


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de rzayani
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut Vérifier la validité d'un fichier xml par xsd
    Bonjour,
    Pour la gestion des fichiers xml, j'ai utilisé la dll msxml4.dll.
    Avant de lire un fichier xml, je veux vérifer qu'il est conforme à un DTD (fichier xsd).
    J'ai pas trouvé un lien qui décrit mon besoin.

    Merci d'avance pour vos réponses.

  2. #2
    Membre confirmé Avatar de rzayani
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut
    J'ai trouvé la solution suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    IXMLDOMSchemaCollectionPtr pSchemaCache;
    hr =pSchemaCache.CreateInstance(__uuidof(XMLSchemaCache40));
    if(FAILED(hr)
    {
    return;
    }
    pSchemaCache->add("", "Schema.xsd");
    pXMLDoc->schemas =pSchemaCache.GetInterfacePtr();
     
    if(pXMLDoc->validate())
    {
    // Fichier valide
    }
    Mais, la fonction CreateInstance (dans la 2ème ligne) retourne -2147221008. Et par la suite la création de l'instance a échoué.

  3. #3
    Membre confirmé Avatar de rzayani
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut
    Il manque la fonction CoInitialize(NULL):
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    HRESULT hr;
    	IXMLDOMDocument2Ptr l_pXMLDOM;
    	IXMLDOMSchemaCollectionPtr l_pSchemaCache;
    	IXMLDOMDocument2Ptr l_pXSDDoc  = NULL;
    	IXMLDOMParseErrorPtr l_pError   = NULL;
     
    	CoInitialize(NULL);
     
    	// Document XML
    	hr = l_pXMLDOM.CreateInstance(__uuidof(MSXML2::DOMDocument));
    	if (FAILED(hr))
    	{
    		return ERREUR;
    	}
    	else
    	{
    		// Nothing TODO
    	}
    	l_pXMLDOM->async           =  VARIANT_FALSE;       
        l_pXMLDOM->validateOnParse =  VARIANT_FALSE;
    	l_pXMLDOM->load(m_strConfigurationFilePath.GetBuffer(m_strConfigurationFilePath.GetLength()));
     
    	// Document XSD
    	hr = l_pXSDDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
    	if (FAILED(hr))
    	{
    		return ERREUR;
    	}
    	else
    	{
    		// Nothing TODO
    	}
    	l_pXSDDoc->async           =  VARIANT_FALSE;       
        l_pXSDDoc->validateOnParse =  VARIANT_FALSE;
    	l_pXSDDoc->load("Conf_Campain.xsd");
     
    	// Schema cache
    	hr = l_pSchemaCache.CreateInstance(__uuidof(XMLSchemaCache));
    	if (FAILED(hr))
    	{
    		return ERREUR;
    	}
    	else
    	{
    		// Nothing TODO
    	}
    	l_pSchemaCache->add("urn:books",l_pXSDDoc.GetInterfacePtr());
     
    	l_pXMLDOM->schemas = l_pSchemaCache.GetInterfacePtr();
     
    	l_pError = l_pXMLDOM->validate();
     
    	if (l_pError->errorCode != 0)
    	{
                      // Erreur
                 }
    Mais dans la ligne :
    l_pSchemaCache->add("urn:books",l_pXSDDoc.GetInterfacePtr());
    l'application crash.

Discussions similaires

  1. [DOM] php4 : validation d'un fichier XML par rapport à un XSD
    Par nannous dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 25/02/2008, 09h43
  2. [XSLT] Insertion du nom du fichier XML par transformation XSL
    Par stepd dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/07/2006, 11h40
  3. [XML] php4 : vérifier la validité d'un document XML
    Par GTJuanpablo dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/05/2006, 22h29
  4. [SAX] Erreur pour trouver la DTD d'un fichier XML parsé!
    Par gdawirs dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/01/2006, 15h28
  5. [DOM] Erreur lors du parsing d'un fichier XML par l'API DOM
    Par patricetoan dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/09/2005, 12h43

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