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