在wince下不能解析xml,不能加载 本帖最后由 lover4ever 于 2010-02-21 14:42:29 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我把代码改成这样了还是不行,加载失败,高手帮帮忙吧HRESULT hr; CComPtr<IXMLDOMDocument> m_iXMLDoc; CComPtr<IXMLDOMElement> iRooterElm=NULL; if(FAILED( m_iXMLDoc.CoCreateInstance( __uuidof( DOMDocument )))) goto RETURN_FALSE; VARIANT_BOOL bSuccess=false; m_iXMLDoc->put_async(FALSE); m_iXMLDoc->put_resolveExternals(VARIANT_FALSE); hr=m_iXMLDoc->load(CComVariant("temp.txt"), &bSuccess ); if(FAILED(hr)) goto RETURN_FALSE; if(VARIANT_FALSE==bSuccess) goto RETURN_FALSE; //if(FAILED(m_iXMLDoc->get_documentElement( &iRooterElm ))) goto RETURN_FALSE; //if(NULL== iRooterElm) goto RETURN_FALSE; IXMLDOMNode* pNode=NULL; IXMLDOMNode* pRootNode=NULL; IXMLDOMNodeList* pNodeList=NULL; iRooterElm->get_childNodes(&pNodeList); if(pNodeList==NULL) goto RETURN_FALSE; hr=m_iXMLDoc->selectSingleNode(_T("ArrayOfString"),&pRootNode); if(FAILED(hr)) goto RETURN_FALSE; if(E_INVALIDARG==hr) { ::MessageBox(NULL,TEXT("invalid arg"),TEXT("ERR:"),MB_OK); } if(NULL==pRootNode) goto RETURN_FALSE; long lLen=0; pNodeList->get_length(&lLen); BSTR content; for(long i=0;i<lLen;++i) { pNodeList->get_item(i,&pNode); pNode->get_text(&content); comboProvince.AddString((wchar_t*)content); } 这可不仅仅是代码问题,你的xml文件也必须满足特定要求的,如果要选择的节点不存在,返回null实际是很正常的 我改成第二段代码后,执行到if(VARIANT_FALSE==bSuccess) goto RETURN_FALSE; 这就跳转了,我的xml文件是这样的:<?xml version="1.0" encoding="utf-8"?><ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/"> <string>直辖市</string> <string>特别行政区</string> <string>黑龙江</string> <string>吉林</string> <string>辽宁</string> <string>内蒙古</string> <string>河北</string> <string>河南</string> <string>山东</string> <string>山西</string> <string>江苏</string> <string>安徽</string> <string>陕西</string> <string>宁夏</string> <string>甘肃</string> <string>青海</string> <string>湖北</string> <string>湖南</string> <string>浙江</string> <string>江西</string> <string>福建</string> <string>贵州</string> <string>四川</string> <string>广东</string> <string>广西</string> <string>云南</string> <string>海南</string> <string>新疆</string> <string>西藏</string> <string>台湾</string> <string>亚洲</string> <string>欧洲</string> <string>非洲</string> <string>北美洲</string> <string>南美洲</string> <string>大洋洲</string></ArrayOfString> 子进程控制台重定向后有部分信息未被捕获 vc中的数组循环赋值?? wince打印 请问如何修改groupbox控件的背景色 急:如何实现包含格式的文本复制 如何处理Sleep()函数引起的程序死锁问题 关于二值位图读取!! 使用HORZSIZE 和 VERTSIZE参数调用GetDeviceCaps(),逻辑宽度和逻辑高度的疑问 知道Cursor的Handle,如何得到它的图象(急) joke100 joke100! 如何编程让系统小喇叭图标去掉或显示? 我的cmbobox下拉列表中的上下箭头按钮好小!有图有真相求解
HRESULT hr;
CComPtr<IXMLDOMDocument> m_iXMLDoc;
CComPtr<IXMLDOMElement> iRooterElm=NULL;
if(FAILED( m_iXMLDoc.CoCreateInstance( __uuidof( DOMDocument )))) goto RETURN_FALSE;
VARIANT_BOOL bSuccess=false;
m_iXMLDoc->put_async(FALSE);
m_iXMLDoc->put_resolveExternals(VARIANT_FALSE);
hr=m_iXMLDoc->load(CComVariant("temp.txt"), &bSuccess );
if(FAILED(hr)) goto RETURN_FALSE;
if(VARIANT_FALSE==bSuccess) goto RETURN_FALSE;
//if(FAILED(m_iXMLDoc->get_documentElement( &iRooterElm ))) goto RETURN_FALSE;
//if(NULL== iRooterElm) goto RETURN_FALSE;
IXMLDOMNode* pNode=NULL;
IXMLDOMNode* pRootNode=NULL;
IXMLDOMNodeList* pNodeList=NULL;
iRooterElm->get_childNodes(&pNodeList);
if(pNodeList==NULL) goto RETURN_FALSE;
hr=m_iXMLDoc->selectSingleNode(_T("ArrayOfString"),&pRootNode);
if(FAILED(hr)) goto RETURN_FALSE;
if(E_INVALIDARG==hr)
{
::MessageBox(NULL,TEXT("invalid arg"),TEXT("ERR:"),MB_OK);
}
if(NULL==pRootNode) goto RETURN_FALSE;
long lLen=0;
pNodeList->get_length(&lLen);
BSTR content;
for(long i=0;i<lLen;++i)
{
pNodeList->get_item(i,&pNode);
pNode->get_text(&content);
comboProvince.AddString((wchar_t*)content);
}
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
<string>直辖市</string>
<string>特别行政区</string>
<string>黑龙江</string>
<string>吉林</string>
<string>辽宁</string>
<string>内蒙古</string>
<string>河北</string>
<string>河南</string>
<string>山东</string>
<string>山西</string>
<string>江苏</string>
<string>安徽</string>
<string>陕西</string>
<string>宁夏</string>
<string>甘肃</string>
<string>青海</string>
<string>湖北</string>
<string>湖南</string>
<string>浙江</string>
<string>江西</string>
<string>福建</string>
<string>贵州</string>
<string>四川</string>
<string>广东</string>
<string>广西</string>
<string>云南</string>
<string>海南</string>
<string>新疆</string>
<string>西藏</string>
<string>台湾</string>
<string>亚洲</string>
<string>欧洲</string>
<string>非洲</string>
<string>北美洲</string>
<string>南美洲</string>
<string>大洋洲</string>
</ArrayOfString>