loadXML总是失败,
环境是 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;
}