最近使用CMarkup,发现没有现成的遍历查找函数,自己写了一个查找函数
bool showmxl(CString &str,CMarkup&xml)
{
if(!xml.IntoElem())
return false;
while(xml.FindElem())
{
if(xml.GetTagName()==str)
{
str=xml.GetData();
AfxMessageBox(str);
return true;
}
else
{
CMarkup myxml=xml;
if(showmxl(str,myxml))
return true;
}
}
return false;
}
测试函数如下:
void CmarkxmlDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
CMarkup xml;
xml.Load(L"D://myproject//markxml//markxml//myxml");
CString str=L"myuser";
bool flag;
xml.ResetMainPos();
xml.FindElem();
xml.IntoElem();
while(xml.FindElem())
{
if(xml.GetTagName()!=str)
{
CMarkup tempxml=xml;
if(showmxl(str,tempxml))
return;
continue;
}
else
{
str=xml.GetData();
if(str==L"")
{
str=xml.GetAttrib(L"ip");
}
AfxMessageBox(str);
}
}
}
这个函数现在没有实现对属性ID的直接查询,不过在最后一个
if(str==L"")
{
str=xml.GetAttrib(L"ip");
}
中修改一下就可以实现了,留待以后实现