📄 xml_cmarkup.cpp
字号:
#include "..\gpinclude\xml_cmarkup.h"
#include "..\gpinclude\std_string.h"
bool GP::FindElemByIndex(CMarkup & xml, int index)
{
xml.ResetMainPos();
for (;index >= 0 ;)
{
if (!xml.FindElem())
{
return false;
}
index--;
}
return true;
}
bool GP::FindElemByLayer(CMarkup & xml, char * szLayerVector)
{
char * szIndex = new char[XML_CMARKUP_DEPTH + 1];
int iIndex = 0; //当前层的item索引号
//begin和end用来解析传递进来的层次路径字符串。分析出各层的item索引号。
//begin代表当前将要解析的字符串开始地址,end代表当前将要解析的字符串的结束地址
//解析方法是通过getSubString取得起止地址段间的字符串,然后用atoi将其转换为整数型的item索引号。
char * begin = szLayerVector;
char * end = begin;
end = strchr(begin, ',');
GP::getSubString(begin, end, szIndex, XML_CMARKUP_DEPTH + 1);
for (;;)
{
iIndex = atoi(szIndex);
if (!FindElemByIndex(xml, iIndex))
{
return false;
}
begin = ++end;
end = strchr(begin, ',');
if (!end)//则说明解析完毕,正常返回。
{
return true;
}
GP::getSubString(begin, end, szIndex, XML_CMARKUP_DEPTH + 1);
//如果没有解析完毕,则还要进入下一层,继续解析。
if (!xml.IntoElem())//如果进入一下层出错,则说明已经是最后一层了,用户要求的解析层数多于实际情况,返回false。
{
return false;
}
}
}
bool GP::ReFindElemByLayer(CMarkup & xml, char * szLayerVector)
{
xml.ResetPos();
return xml.FindElem() && FindElemByLayer(xml, szLayerVector);
}
bool GP::FindChildElemByIndex(CMarkup & xml, int index)
{
xml.ResetChildPos();
for (;index >= 0 ;)
{
if (!xml.FindChildElem())
{
return false;
}
index--;
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -