CoInitialize(NULL); IXMLDOMDocumentPtr m_plDomDocument;
IXMLDOMElementPtr m_pDocRoot;
IXMLDOMNodePtr m_pDocNode; HRESULT hr = m_plDomDocument.CreateInstance(CLSID_DOMDocument); if (FAILED(hr))
{
_com_error er(hr);
AfxMessageBox(er.ErrorMessage());
} // specify xml file name
CString strFileName ("http://youth.fzu.edu.cn/NetMsg/test.asp"); _bstr_t bstrFileName;
bstrFileName = strFileName.AllocSysString(); variant_t vResult;
vResult = m_plDomDocument->load(bstrFileName);
if (((bool)vResult) == TRUE) // 成功的
{
// now that the document is loaded, we need to initialize the root pointer
m_pDocRoot = m_plDomDocument->documentElement;
m_pDocNode = m_pDocRoot->selectSingleNode("//TestName");
AfxMessageBox(m_plDomDocument->xml);//出问题,空的
//AfxMessageBox(m_pDocNode->text);
}
else
{
AfxMessageBox("Document FAILED to load!");
}test.asp是写成xml的.
就是:Response.content="text/xml"
IXMLDOMElementPtr m_pDocRoot;
IXMLDOMNodePtr m_pDocNode; HRESULT hr = m_plDomDocument.CreateInstance(CLSID_DOMDocument); if (FAILED(hr))
{
_com_error er(hr);
AfxMessageBox(er.ErrorMessage());
} // specify xml file name
CString strFileName ("http://youth.fzu.edu.cn/NetMsg/test.asp"); _bstr_t bstrFileName;
bstrFileName = strFileName.AllocSysString(); variant_t vResult;
vResult = m_plDomDocument->load(bstrFileName);
if (((bool)vResult) == TRUE) // 成功的
{
// now that the document is loaded, we need to initialize the root pointer
m_pDocRoot = m_plDomDocument->documentElement;
m_pDocNode = m_pDocRoot->selectSingleNode("//TestName");
AfxMessageBox(m_plDomDocument->xml);//出问题,空的
//AfxMessageBox(m_pDocNode->text);
}
else
{
AfxMessageBox("Document FAILED to load!");
}test.asp是写成xml的.
就是:Response.content="text/xml"
解决方案 »
- 关于WaitForMultipleObjects的困惑,求助。
- 服务进程中创建用户进程
- 如何强制执行Onsubmit handler
- 我的问题~有人知道吗~
- 弱弱的问,ATL做一控件,上面加一button,想点击后出一窗口,该窗口是CWindow型的
- 菜单问题
- <<Windows 网络编程技术 第二版>>国内有么?英文版,电子书都行.
- RegQueryValueEx的问题,求救!
- 终于找到spread 6.0的注册码了,有要的吗
- CDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)这个函数应该怎么用?
- matlab引擎问题
- 菜鸟问题,解决就给分~
http://youth.fzu.edu.cn/NetMsg/test.xml也不行
--------------------
改成
http://youth.fzu.edu.cn/NetMsg/test.xml
也不行。
{
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType; if (!AfxParseURL(lpcszXMLFilePath, dwServiceType, strServerName, strObject, nPort) ||
dwServiceType != INTERNET_SERVICE_HTTP)
{
AfxAddTraceEx(DEBUG_LEVEL_6, _T("打开XML文档时不正确的路径:%s"), lpcszXMLFilePath); return FALSE;
} DeleteContents(); HRESULT hr = S_FALSE; USES_CONVERSION;
LPCWSTR lpwszUrl = T2CW(lpcszXMLFilePath); IUnknown *pUnk = NULL;
hr = CoCreateInstance(CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER,
IID_IUnknown, (void **)&pUnk);
if (FAILED(hr) || pUnk == NULL)
return FALSE; MSXML::IXMLDocument *pDoc = NULL;
hr = pUnk->QueryInterface(IID_IXMLDocument, (void **)&pDoc); pUnk->Release();
pUnk = NULL; if (FAILED(hr) || pDoc == NULL)
return FALSE; IPersistMoniker *pPersistmk = NULL;
hr = pDoc->QueryInterface(IID_IPersistMoniker, (void **)&pPersistmk);
if (FAILED(hr) || pPersistmk == NULL)
{
pDoc->Release();
return FALSE;
} IMoniker *pmk = NULL;
hr = CreateURLMoniker(NULL, lpwszUrl, &pmk);
if (FAILED(hr) || pmk == NULL)
{
pDoc->Release();
pPersistmk->Release();
return FALSE;
} IBindCtx *pbc = NULL;
hr = CreateBindCtx(0, &pbc);
if ((!pbc) || FAILED(hr))
{
pDoc->Release();
pPersistmk->Release();
pmk->Release();
}
pbc->AddRef(); HANDLE hEvent = CreateEventA(0, 0, 0, 0); IBindStatusCallback *pPreviousCallback = NULL; CURLBindStatusCallback *pbsc = new CURLBindStatusCallback(pbc, pmk, hEvent);
hr = RegisterBindStatusCallback(pbc, pbsc, &pPreviousCallback, 0);
if (FAILED(hr))
{
ASSERT(FALSE);
pDoc->Release();
pPersistmk->Release();
return FALSE;
}
hr = pPersistmk->Load(FALSE, pmk, pbc, 0); if (FAILED(hr))
{
ASSERT(FALSE);
pDoc->Release();
pPersistmk->Release();
return FALSE;
} pPersistmk->Release();
pPersistmk = NULL; while (1)
{
MSG msg;
DWORD dwRet = MsgWaitForMultipleObjects(1, &hEvent, FALSE, INFINITE, QS_ALLINPUT);
if (dwRet == WAIT_OBJECT_0)
{
break;
}
else
{
GetMessage(&msg, NULL, 0, 0);
DispatchMessage(&msg);
}
} m_strURL = lpcszXMLFilePath; if (!OpenXMLDocument(pDoc))
ASSERT(FALSE); pDoc->Release();
pbsc->Release(); return TRUE;
}
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_URLBINDSTATUSCALLBACK_H__CB2E3242_24D7_487A_8DB5_AB0CD045EFF4__INCLUDED_)
#define AFX_URLBINDSTATUSCALLBACK_H__CB2E3242_24D7_487A_8DB5_AB0CD045EFF4__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CURLBindStatusCallback : public IBindStatusCallback, public IAuthenticate, public IHttpSecurity
{
public:
CURLBindStatusCallback(IBindCtx *pbc, IMoniker *pmkIn, HANDLE hEvent);
virtual ~CURLBindStatusCallback();public:
// *** IUnknown methods ***
STDMETHOD(QueryInterface)(REFIID riid, LPVOID * ppvObj);
STDMETHOD_(ULONG, AddRef)(void) ;
STDMETHOD_(ULONG, Release)(void); // *** IAuthenticate ***
STDMETHOD(Authenticate)(HWND *phwnd, LPWSTR *pszUsername, LPWSTR *pszPassword); // *** IBindStatusCallback ***
STDMETHOD(OnStartBinding)(/* [in] */ DWORD grfBSCOption, /* [in] */ IBinding *pib); STDMETHOD(GetPriority)(/* [out] */ LONG *pnPriority);
STDMETHOD(OnLowResource)(/* [in] */ DWORD reserved); STDMETHOD(OnProgress)(/* [in] */ ULONG ulProgress, /* [in] */ ULONG ulProgressMax,
/* [in] */ ULONG ulStatusCode, /* [in] */ LPCWSTR szStatusText); STDMETHOD(OnStopBinding)(/* [in] */ HRESULT hresult, /* [in] */ LPCWSTR szError); STDMETHOD(GetBindInfo)(/* [out] */ DWORD *grfBINDF, /* [unique][out][in] */ BINDINFO *pbindinfo); STDMETHOD(OnDataAvailable)(/* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC *pformatetc, /* [in] */ STGMEDIUM *pstgmed); STDMETHOD(OnObjectAvailable)(/* [in] */ REFIID riid, /* [iid_is][in] */ IUnknown *punk); /* *** IHttpSecurity *** */
STDMETHOD(GetWindow)(REFGUID rguidReason, HWND* phwnd); STDMETHOD(OnSecurityProblem)(DWORD dwProblem); // Worker routines IBinding* m_pib;
IMoniker* m_pmk;
IBindCtx* m_pbc;
HANDLE m_hEvent; ULONG m_cRef; VOID Abort(); // Aborts the binding
};#endif // !defined(AFX_URLBINDSTATUSCALLBACK_H__CB2E3242_24D7_487A_8DB5_AB0CD045EFF4__INCLUDED_)
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "resource.h"
#include "URLBindStatusCallback.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////STDMETHODIMP CURLBindStatusCallback::QueryInterface(REFIID riid, LPVOID * ppvObj)
{
if (IsEqualIID(riid, IID_IBindStatusCallback) || IsEqualIID(riid, IID_IUnknown))
{
*ppvObj = (IBindStatusCallback *)this;
}
else if (IsEqualIID(riid, IID_IAuthenticate))
{
*ppvObj = (IAuthenticate *)this;
}
else if (IsEqualIID(riid, IID_IHttpSecurity))
{
*ppvObj = (IHttpSecurity *)this;
}
else
{
*ppvObj = NULL;
return E_NOINTERFACE;
} ((LPUNKNOWN)*ppvObj)->AddRef(); return NOERROR;
}ULONG CURLBindStatusCallback::AddRef(void)
{
return ++m_cRef;
}ULONG CURLBindStatusCallback::Release(void)
{
if (0L != --m_cRef)
return m_cRef; delete this;
return 0L;
}VOID CURLBindStatusCallback::Abort()
{
if (m_pib)
{
m_pib->Abort();
}
}CURLBindStatusCallback::CURLBindStatusCallback(IBindCtx *pbc, IMoniker *pmkIn, HANDLE hEvent)
{
// Initialize object.
m_cRef = 0L; m_pib = NULL;
m_pbc = pbc;
if (m_pbc)
m_pbc->AddRef(); m_pmk = pmkIn;
if(m_pmk)
m_pmk->AddRef(); m_hEvent = hEvent;
}CURLBindStatusCallback::~CURLBindStatusCallback()
{
if (m_pib)
{
m_pib->Release();
m_pib = NULL;
} if (m_pbc)
{
m_pbc->Release();
m_pbc = NULL;
} if (m_pmk)
{
m_pmk->Release();
m_pmk = NULL;
} if (m_hEvent)
CloseHandle(m_hEvent);
}// IAuthenticate Methods
STDMETHODIMP CURLBindStatusCallback::Authenticate(HWND *phwnd, LPWSTR *pszUsername, LPWSTR *pszPassword)
{
return E_NOTIMPL;
}// IBindStatusCallback Methods
STDMETHODIMP CURLBindStatusCallback::OnStartBinding(DWORD grfBSCOption, IBinding *pibIn)
{
return S_OK;
}STDMETHODIMP CURLBindStatusCallback::GetPriority(LONG *pnPriority)
{
ATLTRACE2(atlTraceControls,2, _T("CURLBindStatusCallback::GetPriority"));
HRESULT hr = S_OK;
if (pnPriority)
*pnPriority = THREAD_PRIORITY_NORMAL;
else
hr = E_INVALIDARG;
return S_OK; return S_OK;
}STDMETHODIMP CURLBindStatusCallback::OnLowResource(DWORD reserved)
{
ATLTRACE2(atlTraceControls,2,_T("CURLBindStatusCallback::OnLowResource"));
return S_OK; //BUGBUG
}STDMETHODIMP CURLBindStatusCallback::OnProgress(ULONG ulProgress,
ULONG ulProgressMax,
ULONG ulStatusCode,
LPCWSTR szStatusText)
{
ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnProgress"));
TRACE(_T("Downloading....%d %d %s\n"), ulProgress, ulProgressMax, szStatusText);
return S_OK;
}STDMETHODIMP CURLBindStatusCallback::OnStopBinding(HRESULT hresult, LPCWSTR szError)
{
ATLTRACE2(atlTraceControls,2,_T("CURLBindStatusCallback::OnStopBinding\n"));
HRESULT hr = S_OK;
if (SUCCEEDED(hresult))
{
OutputDebugString(TEXT("Done Loading succesfully"));
}
// Signal event to wake up thread to navigate children.
SetEvent(m_hEvent); if (m_pib)
{
m_pib->Release();
m_pib = NULL;
} return hr;
}STDMETHODIMP CURLBindStatusCallback::GetBindInfo(DWORD *grfBINDF, /* [out] */
BINDINFO *pbindinfo /* [unique][out][in] */ )
{
ATLTRACE2(atlTraceControls, 2, _T("CURLBindStatusCallback::GetBindInfo\n"));/* if (pbindinfo == NULL || pbindInfo->cbSize == 0 || pgrfBINDF == NULL)
return E_INVALIDARG; *pgrfBINDF = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE |
BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE; ULONG cbSize = pbindInfo->cbSize; // remember incoming cbSize
memset(pbindInfo, 0, cbSize); // zero out structure
pbindInfo->cbSize = cbSize; // restore cbSize
pbindInfo->dwBindVerb = BINDVERB_GET; // set verb*/ return S_OK;
}STDMETHODIMP CURLBindStatusCallback::OnDataAvailable(
/* [in] */ DWORD grfBSCF,
/* [in] */ DWORD dwSize,
/* [in] */ FORMATETC *pformatetc,
/* [in] */ STGMEDIUM *pstgmed)
{
return S_OK;
}STDMETHODIMP CURLBindStatusCallback::OnObjectAvailable(
/* [in] */ REFIID riid,
/* [iid_is][in] */ IUnknown *punk)
{
ATLTRACE2(atlTraceControls,2,_T("CURLBindStatusCallback::OnObjectAvailable"));
return S_OK;
}/* *** IHttpSecurity *** */
// BUGBUG - Do we need to implement this interface
STDMETHODIMP CURLBindStatusCallback::GetWindow(REFGUID rguidReason, HWND* phwnd)
{
if (!phwnd)
return E_POINTER; *phwnd = NULL; // BUGBUG
return S_OK;
}STDMETHODIMP CURLBindStatusCallback::OnSecurityProblem(DWORD dwProblem)
{
// Force UI - return S_FALSE for all problems.
return S_FALSE;
}
在局域网的web站点通过