⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xml_cmarkup.cpp

📁 cmarkup是一个简易的xml解释器
💻 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 + -