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
|
CNoeud* res = new CNoeud();
MSXML2::IXMLDOMDocumentPtr doc;
HRESULT hr;
CoInitialize(NULL);
hr = doc.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
res = NULL;
}
else
{
doc->async = VARIANT_FALSE;
if(doc->load(NomFichier.c_str()) == VARIANT_TRUE)
{
MSXML2::IXMLDOMNodeListPtr pere = doc->selectNodes(balise.c_str());
MSXML2::IXMLDOMNodePtr noeud_courant = NULL ;
int count = pere->length;
int i = 0;
while( count-- )
{
pere->get_item(i++,&noeud_courant);
//ajout d'un fils
CNoeud* fils = new CNoeud();
res->AjouterFils(&fils,noeud_courant,&res);
//appel recursif avec le nouveau fils
GetNoeuds(noeud_courant,&fils);
}
}
}
doc->Release();
CoUninitialize();
return res;
} |
Partager