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