Bonjour,

Je cherche un moyen de lire un fichier XML en utilisant MSXML. Le seul souci c'est que le fichier XML se trouve sur un serveur distant et que je devrais donc y accéder par une adresse HTTP.

Tant que le fichier est en local, mon code fonctionne parfaitement mais si le fichier est distant, il se plante lamentablement sur le load à l'utilisation (pas à la compilation).

Pour l'instant mon code ressemble à ça :

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
CString GetUrl(CString stServeur){
	IXMLDOMDocumentPtr m_plDomDocument;
	IXMLDOMElementPtr  m_pDomElement;
	IXMLDOMNodePtr     m_pDomNode;
	IXMLDOMNodeListPtr m_pDomNodeList;
	CString stCourant, stFinal;

	// Initialize COM
	::CoInitialize(NULL);

	HRESULT hr = m_plDomDocument.CreateInstance(CLSID_DOMDocument60);
	if (FAILED(hr))	{
		_com_error er(hr);
		AfxMessageBox(er.ErrorMessage());
	}

	// specify xml file name
	CString strFileName (stServeur + CST_CHEMIN_FICHIER_XML_CONF);
	AfxMessageBox("Filename " + strFileName);
	
	// convert xml file name string to something COM can handle (BSTR)
	_bstr_t bstrFileName;
	bstrFileName = strFileName.AllocSysString();

	// call the IXMLDOMDocumentPtr's load function to load the XML document
	VARIANT_BOOL vResult;
	vResult = m_plDomDocument->load(bstrFileName);
	if (vResult == FALSE)	{
		AfxMessageBox("GetUrl::XML Document FAILED to load!");
	}

/* Traitement sur le fichier */

}
J'ai vu sur le support Microsoft qu'il semble que ce soit volontaire.
Ils semblent dire qu'il y a une méthode pour s'en sortir mais je n'ai pas trop compris quand ils parlent de créer du "marshaling code".

Est-ce que quelqu'un sait comment attaquer un XML à distance de manière à ce que je puisse extraire les infos sous la forme d'un arbre DOM ?

Merci d'avance.