XML:类似
<主菜单>
<第一菜单>
<第三></第三>
<第三></第三>
</第一菜单>
</主菜单>代码:
CoInitialize(NULL);
docPtr.CreateInstance(__uuidof(DOMDocument40));
docPtr->load("E:\\保护菜单\\RCS915GB.xml");//这是问题,假如是个全英文菜单没事,中文节点什么的 //出问题
elePtr = docPtr->documentElement;
nodelist = elePtr->GetchildNodes();//中文报错点
long len = nodelist->Getlength();
CString str;
str.Format("%d",len);
MessageBox(str); for (int i=0;i<len;i++)
{
nodePtr = nodelist->Getitem(i);
CString str2;
str2.Format("%s",(char*)(_bstr_t)nodePtr->nodeName);
AfxMessageBox(str2);
if (nodePtr->hasChildNodes())
{
IXMLDOMNodeListPtr list1 = nodePtr->GetchildNodes();
long len1 = list1->Getlength();
for (int j=0;j<len1;j++)
{
IXMLDOMNodePtr node = list1->Getitem(j);
CString str1;
str1.Format("%s",(char*)(_bstr_t)node->nodeName);
AfxMessageBox(str1);
}
}
}
求教............................
<主菜单>
<第一菜单>
<第三></第三>
<第三></第三>
</第一菜单>
</主菜单>代码:
CoInitialize(NULL);
docPtr.CreateInstance(__uuidof(DOMDocument40));
docPtr->load("E:\\保护菜单\\RCS915GB.xml");//这是问题,假如是个全英文菜单没事,中文节点什么的 //出问题
elePtr = docPtr->documentElement;
nodelist = elePtr->GetchildNodes();//中文报错点
long len = nodelist->Getlength();
CString str;
str.Format("%d",len);
MessageBox(str); for (int i=0;i<len;i++)
{
nodePtr = nodelist->Getitem(i);
CString str2;
str2.Format("%s",(char*)(_bstr_t)nodePtr->nodeName);
AfxMessageBox(str2);
if (nodePtr->hasChildNodes())
{
IXMLDOMNodeListPtr list1 = nodePtr->GetchildNodes();
long len1 = list1->Getlength();
for (int j=0;j<len1;j++)
{
IXMLDOMNodePtr node = list1->Getitem(j);
CString str1;
str1.Format("%s",(char*)(_bstr_t)node->nodeName);
AfxMessageBox(str1);
}
}
}
求教............................
IXMLDOMNodeListPtr 的方法 GetLength() 返回的长度为什么是错误的?也就是说当节点下没有子节点的时候他的长度依然是1,实际过程中 循环只能放弃第一个元素(item(0))?