环境是 vs2008,一个从vc6.0升级上来的工程。
在使用loadXML的是,总是无法成功。
测试用的xml文档可以ie里头正确显示。
CoUninitialize();
是已经调用了的。bool HtmlItf::IsSuccess(BSTR sXML)
{

IXMLDOMDocument *pXmlDoc=NULL;  HRESULT  hr=CoCreateInstance(CLSID_DOMDocument,NULL, CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER/*CLSCTX_ALL*/, IID_IXMLDOMDocument,(LPVOID*)&pXmlDoc);  if(hr == S_OK)
{
VARIANT_BOOL   bFlag=VARIANT_FALSE;
pXmlDoc->put_async(VARIANT_FALSE);
pXmlDoc->put_validateOnParse(VARIANT_TRUE);
hr = pXmlDoc->loadXML(sXML,&bFlag); ///<这里返回总是失败. if(bFlag == VARIANT_FALSE)return false; IXMLDOMElement *pNodeElement;

hr = pXmlDoc->get_documentElement(&pNodeElement); if(hr != S_OK)return false; IXMLDOMNodeList *pNodeList; hr = pNodeElement->get_childNodes(&pNodeList); if(hr == S_OK)
{
IXMLDOMNode *pStateNode;
BSTR s;
BSTR sNodeName;
long NodeLen;
pNodeList->get_length(&NodeLen);
for(int i=0;i<NodeLen;i++)
{
pNodeList->get_item(i,&pStateNode);
pStateNode->get_nodeName(&sNodeName);
pStateNode->get_text(&s);
if(sNodeName = BSTR("state"))
{
if(s==BSTR("0"))
return false;
else if(s==BSTR("1"))
return true;
} }
}
}
return false;
}

解决方案 »

  1.   

    用debug
    看看到底是哪一步出错了,再具体分析。
      

  2.   

    版本兼容问题吧,在VC6下调试出现这样的问题吗?
    hr = pXmlDoc->loadXML(sXML,&bFlag); 这里显示失败,提示什么信息呢?
    或者你好好检查下你的这个XML的编码。
      

  3.   

    http://topic.csdn.net/t/20060405/16/4665163.html
    http://blog.csdn.net/Jaguar1982/archive/2005/01/06/242302.aspx
      

  4.   

    失败的原因很多,你可以通过MSXML的错误提示进行修改:
            IErrorInfo* pErrInfo = NULL;
            CHKHR(::GetErrorInfo(0, &pErrInfo));        CComBSTR bstrDescription; 
            CComBSTR bstrSource; 
            CComBSTR bstrHelpFile;         CHKHR(pErrInfo->GetDescription(&bstrDescription));
            CHKHR(pErrInfo->GetSource(&bstrSource));
            CHKHR(pErrInfo->GetHelpFile(&bstrHelpFile));
    比较容易出错的地方是对DTD的访问,可以如下修改:
        CHKHR(spDoc->put_validateOnParse(VARIANT_FALSE));
        CHKHR(spDoc->put_resolveExternals(VARIANT_FALSE));
      

  5.   

    比较容易出错的是xml文件的编码,你检查下,我以前也碰到过一次 发现是编码变了
      

  6.   

    bstrXML = "<?wsx version \"1.0\" ?><smil> \
               <media src = \"welcome1.asf\"/></smil>";
    pXmlDoc->loadXML(bstrXML ,&bFlag); 你用这段代码试一下,看能否加载成功
      

  7.   

    xml可以在ie里头正确的打开。编码也试过改成UTF-8或者UTF-16.可是都没有用。