loadXML总是失败,

rangwoxiao 2010-05-03 01:50:11
环境是 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;
}
...全文
735 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rangwoxiao 2010-05-10
  • 打赏
  • 举报
回复
xml可以在ie里头正确的打开。编码也试过改成UTF-8或者UTF-16.可是都没有用。
marrco2005 2010-05-05
  • 打赏
  • 举报
回复
bstrXML = "<?wsx version \"1.0\" ?><smil> \
<media src = \"welcome1.asf\"/></smil>";
pXmlDoc->loadXML(bstrXML ,&bFlag);

你用这段代码试一下,看能否加载成功
ghosty_hand 2010-05-05
  • 打赏
  • 举报
回复
比较容易出错的是xml文件的编码,你检查下,我以前也碰到过一次 发现是编码变了
张琪Samuel 2010-05-05
  • 打赏
  • 举报
回复
失败的原因很多,你可以通过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));
尹成 2010-05-04
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20060405/16/4665163.html
http://blog.csdn.net/Jaguar1982/archive/2005/01/06/242302.aspx
尹成 2010-05-04
  • 打赏
  • 举报
回复
版本兼容问题吧,在VC6下调试出现这样的问题吗?
hr = pXmlDoc->loadXML(sXML,&bFlag); 这里显示失败,提示什么信息呢?
或者你好好检查下你的这个XML的编码。
yschenwei 2010-05-03
  • 打赏
  • 举报
回复
用debug
看看到底是哪一步出错了,再具体分析。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧