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"

解决方案 »

  1.   

    http://youth.fzu.edu.cn/NetMsg/test.asp改成
    http://youth.fzu.edu.cn/NetMsg/test.xml也不行
    --------------------
      

  2.   

    http://youth.fzu.edu.cn/NetMsg/test.asp
    改成
    http://youth.fzu.edu.cn/NetMsg/test.xml
    也不行。
      

  3.   

    BOOL CXMLDocument::OpenDocument(LPCTSTR lpcszXMLFilePath)
    {
    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;    
    }
      

  4.   

    // URLBindStatusCallback.h: interface for the CURLBindStatusCallback class.
    //
    //////////////////////////////////////////////////////////////////////#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_)
      

  5.   

    // URLBindStatusCallback.cpp: implementation of the CURLBindStatusCallback class.
    //
    //////////////////////////////////////////////////////////////////////#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;
    }
      

  6.   

    上面的代码是我独取网络xml文件的代码
    在局域网的web站点通过