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

Visual C++ Discussion :

MSXML et exceptions


Sujet :

Visual C++

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Par d�faut MSXML et exceptions
    Bonjour,

    Je me heurte � certains probl�mes face � l'utilisation de msxml (a priori dans sa version 2) dans eVC++.
    Je veux utiliser le langage XPath dans les fonctions selectSingleNode et selectNodes.
    Au d�part je cr�ais un document de type IXMLDocument et le chargement (avec la m�thode load) fonctionnait plutot bien (j'arrivais � r�cup�rer des noeuds... pas d'erreur majeure).
    Il semblerait que pour pouvoir utiliser XPath je doive sp�cifier le langage de requ�te utilis�. Pour ce faire je dois cr�er non pas un IXMLDocument mais un IXMLDocument2. Cette fois le chargement me lace une grosse erreur. Sur certains forums on m'a dit que cela pouvait venir du fait que mon fichier XML est mal form�.
    Ainsi j'ai voulu faire un try catch sur ma m�thode load. Apr�s avoir r�ussi � activer le handler d'exception (-GX dans les settings du projet...), je ne catch toujours pas l'erreur alors que j'ai mis catch (...)

    Je n'y comprends goutte...

    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
     
    	VARIANT vXMLSrc; 
    	vXMLSrc.vt = VT_BSTR; 
    	vXMLSrc.bstrVal=::SysAllocString(L"\\FichierDonneesCE07.xml");
    	HRESULT hr = ::CoInitializeEx( NULL , COINIT_MULTITHREADED );
    	CComPtr<IXMLDOMDocument2> iXMLDoc;
    	CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument2, (void**)&iXMLDoc); 
    	CComQIPtr< IObjectSafety, &IID_IObjectSafety>iSafety(iXMLDoc);
    	if (iSafety) 
    	{ 
    		DWORD dwSupported, dwEnabled; 
    		iSafety->GetInterfaceSafetyOptions(IID_IXMLDOMDocument2,
                                       &dwSupported,&dwEnabled);
    		iSafety->SetInterfaceSafetyOptions(IID_IXMLDOMDocument2,
                                       dwSupported,0);
    	}
     
    	VARIANT_BOOL bSuccess=false;
    	CString a ("1");
    	AfxMessageBox(a);
    	try
    	{
    		hr=iXMLDoc->load(vXMLSrc,&bSuccess);
    	}
    	catch(...)
    	{
    		CString a ("Erreur catchée");
    		AfxMessageBox(a);
     
    	}

  2. #2
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Bonjour,

    � tout hasard: as-tu v�rifi� que iXMLDoc soit valide lors de l'appel � load(vXMLSrc,&bSuccess);
    Quelle est la valeur de hr?

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Par d�faut
    Je ne peux rien faire apres load ! Puisque c'est cela qui fait planter mon application... J'aimerais justement pouvoir faire des tests sur la valeur de retour, sur les erreurs possibles de parsing... mais ce n'est pas possible puisque load fait tout planter et que je n'arrive m�me pas � catcher l'exception...

  4. #4
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 295
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 295
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par r0d
    as-tu v�rifi� que iXMLDoc soit valide lors de l'appel � load(vXMLSrc,&bSuccess);

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Par d�faut
    En effet avant l'appel � load la m�thode CoCreateInstance ne fonctionne pas normalement. J'ai un retour �gal � NO_INTERFACE... Cela explique un peu mieux le probl�me. Reste � trouver pourquoi cela ne fonctionne pas et pourquoi la m�thode load plante sans lever d'exception car CoCreateInterface ne fait pas planter l'appli puisque ma message box (celle qui affiche 1) s'affiche...

  6. #6
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Par d�faut
    Je ne sais pas si cela peut aider mais moi j'utilise le CreateInstance.

Discussions similaires

  1. Exception & Try..catch
    Par PurL dans le forum C++Builder
    R�ponses: 2
    Dernier message: 11/12/2002, 15h35
  2. [MSXML] Comment emp�cher la conversion des entit�s ?
    Par nima dans le forum XSL/XSLT/XPATH
    R�ponses: 3
    Dernier message: 08/11/2002, 14h14
  3. R�ponses: 3
    Dernier message: 01/11/2002, 14h30
  4. R�ponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    R�ponses: 7
    Dernier message: 05/06/2002, 14h11

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