win2000 pro,装了msxml 4 sp2。VC6,不晓得打SP6布丁没,虽然下载的VC ISO说是集成SP6的stdafx.h中我加了
#import <msxml3.dll> raw_interfaces_only
using namespace MSXML2;IXMLDOMDocumentPtr m_plDomDocument;
::CoInitialize(NULL);
m_plDomDocument.CreateInstance(__uuidof(MSXML2::DOMDocument30));
m_plDomDocument->load("wveconfig.xml");
虽然我查阅很多人都是直接在load函数中加入XML文件名,但我的编译的时候提示load函数要2个参数才行
请大家看看我的为什么不行,???????然后我用MS XML SDK中的方式
VARIANT_BOOL status;
VARIANT var;CoInitialize(NULL);
m_plDomDocument.CreateInstance(__uuidof(MSXML2::DOMDocument30));
VariantInit(&var);
V_BSTR(&var) = SysAllocString(L"wveconfig.xml");
V_VT(&var) = VT_BSTR;
m_plDomDocument->load(var, &status);
虽然这样做可以编译通过,但是status的返回值老是是FALSE。。
大家再给看看是什么原因咯。

解决方案 »

  1.   

    #include <tchar.h>
    #import "msxml5.dll"
    using namespace MSXML2;inline void TESTHR( HRESULT _hr ) 
       { if FAILED(_hr) throw(_hr); }void XMLDOMNodeSample()
    {
       try {
          IXMLDOMDocumentPtr docPtr;
          IXMLDOMNodePtr DOMNodePtr;      //init
          TESTHR(CoInitialize(NULL)); 
          TESTHR(docPtr.CreateInstance("Msxml2.DOMDocument.5.0"));
          
          VARIANT vtTemp;      vtTemp.vt=VT_I2;
                vtTemp.iVal = 1; //NODE_ELEMENT
          // load a document
          _variant_t varXml("c:\\Temp\\books.xml");
          _variant_t varOut((bool)TRUE);
          varOut = docPtr->load(varXml);
          if ((bool)varOut == FALSE)
             throw(0);
          MessageBox(NULL, _bstr_t(docPtr->xml), _T("Original Document"), MB_OK);
          DOMNodePtr = docPtr->createNode(vtTemp, "VIDEOS", "");
          docPtr->documentElement->appendChild(DOMNodePtr);
          MessageBox(NULL, _bstr_t(docPtr->xml), _T("New Document"), MB_OK);   } catch(...)
       {
          MessageBox(NULL, _T("Exception occurred"), _T("Error"), MB_OK);
       }
       CoUninitialize();
    }
    int main()
    {
       XMLDOMNodeSample();
       return 0;
    }
      

  2.   

    看你们两个用得 msxml的版本不一样提示说少了参数,可以看看import了dll出来的.tlh文件里面的相关信息
      

  3.   

    我昨天用的方法和hsly110老兄差不多,本来昨天都用的好好的在家里,但是到了公司同样的代码却并不行,晚上回家连家里机器也不行了
     表现在load XML文件后,返回值始终是FALSE。MS XML SDK,我装了又删,删了又装还是不行
      

  4.   

    //Initialize COM
    CoInitialize(NULL);
    m_pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)); _variant_t varXMLFile("wveconfig.xml");
    VARIANT_BOOL m_bLoaded;
    m_pDoc->load(varXMLFile,&m_bLoaded);
    if (m_bLoaded == -1) 
    AfxMessageBox("load success");大家给看看,这个样子本来昨天都行的,今天却不行了。。
      

  5.   

    晕,XML文件格式没搞对。。浪费我4天时间,日真的背透了