亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? packet.cpp

?? 有關于C++網絡傳輸操作的一個DLL開發,希望對學習C++的人有幫助
?? CPP
字號:
#include "stdafx.h"
#include "Packet.h"


#define MAX_PATH 260

int SECellByName(DOMElement* pElement,void *pRef)
{
	string tmp1 = pElement->get_tag();
	string tmp2 = ((REF_INPUT *)pRef)->sTag;
	if(pElement->get_tag() == ((REF_INPUT *)pRef)->sTag)
	{
		((REF_INPUT *)pRef)->sFoundElement = pElement;
		return 1;
	}
		
	return 0;
}

int SECellByAttr(DOMElement* pElement,void *pRef)
{
	if(pElement->get_tag() == ((REF_INPUT *)pRef)->sTag)
	{
		string m_tmp_att;
		pElement->GetAttribute(((REF_INPUT *)pRef)->sAttr.c_str(), m_tmp_att);
		
		if(m_tmp_att == ((REF_INPUT *)pRef)->sValue.c_str())
		{
			((REF_INPUT *)pRef)->sFoundElement = pElement;
			return 1;		
		}
	}
	
	return 0;	
}

/**********************************
   class CPacket Implement
***********************************/
CPacket::CPacket()
{
	m_CurrentElement = NULL;
	m_FoundElement = NULL;
	m_bInitFlag = false; 	
}

CPacket::~CPacket()
{
	
}


DOMElement * CPacket::SearchElement(char *szNodeName)
{
	int begin = 0;
	
	DOMElement * pCurrentElement = NULL;
	//判斷是否絕對路徑
	if(szNodeName[0] == '/' || szNodeName[0] == '\\')
	{
		pCurrentElement = m_DomTree.getDocumentElement();
		begin = 1;	
	}
	else
	{
		if(m_CurrentElement != NULL)
			pCurrentElement = m_CurrentElement;
		else
		{
			pCurrentElement = m_DomTree.getDocumentElement();
			m_CurrentElement = pCurrentElement;
		}
	}
	
	if(pCurrentElement == NULL)
	{
		return NULL;
	}
	
	////////////////////////
	// 當前tag名
	m_FoundElement = NULL;

	vector<string> m_PathElement;
	vector<string>::iterator it;
	if(begin == 1)
	{
		split_bychar(m_PathElement,szNodeName + 1,'/');
	}
	else
	{
		split_bychar(m_PathElement,szNodeName,'/');
	}
	
	it = m_PathElement.begin();
	REF_INPUT in_sRef;	
	for(; it != m_PathElement.end(); it++)
	{
		memset(&in_sRef,0,sizeof(in_sRef));		

		m_FoundElement = NULL;
		in_sRef.sTag = (*it);
		LPENUM_CALLBACK_FUNC pFun = &(SECellByName);
		m_DomTree.EnumerateElements(pFun,pCurrentElement,(void *)&in_sRef);
		m_FoundElement = (DOMElement *)in_sRef.sFoundElement;
		if(!m_FoundElement)
			return NULL;
		pCurrentElement = m_FoundElement;
	}

	return m_FoundElement;	
}

DOMElement * CPacket::SearchElement(char *szNodeName,char *szProper,char *szId)
{
	int begin = 0;
	
	DOMElement * pCurrentElement = NULL;
	//判斷是否絕對路徑
	if(szNodeName[0] == '/' || szNodeName[0] == '\\')
	{
		pCurrentElement = m_DomTree.getDocumentElement();
		begin = 1;	
	}
	else
	{
		if(m_CurrentElement != NULL)
			pCurrentElement = m_CurrentElement;
		else
		{
			pCurrentElement = m_DomTree.getDocumentElement();
			m_CurrentElement = pCurrentElement;
		}
	}
	
	if(pCurrentElement == NULL)
	{
		return false;
	}
	
	////////////////////////
	// 當前tag名
	m_FoundElement = NULL;

	vector<string> m_PathElement;
	vector<string>::iterator it;
	if(begin == 1)
	{
		split_bychar(m_PathElement,szNodeName + 1,'/');
	}
	else
	{
		split_bychar(m_PathElement,szNodeName,'/');
	}
	
	m_CrrentAttr = szProper;
	m_CrrentValue = szId;
	
	it = m_PathElement.begin();
	for(; it != m_PathElement.end(); it++)
	{
		//m_CurrentTag = (*it);
		m_FoundElement = NULL;

		REF_INPUT in_sRef;
		in_sRef.sTag = (*it);
		
		if(it == m_PathElement.end() - 1)
			m_DomTree.EnumerateElements(SECellByAttr,pCurrentElement,(void *)&in_sRef);
		else
			m_DomTree.EnumerateElements(SECellByName,pCurrentElement,(void *)&in_sRef);
		
		m_FoundElement = (DOMElement *)in_sRef.sFoundElement;
		pCurrentElement = m_FoundElement;		
	}

	return m_FoundElement;
}

DOMElement * CPacket::CreateElement(char szNodeName[])
{
	int begin = 0;
	if(strcmp(szNodeName, ".\\") == 0 || strcmp(szNodeName, "./") == 0)
	{
		return m_CurrentElement;
	}

	DOMElement * pCurrentElement = NULL;
	DOMElement * pParentElement = NULL;
	
	//判斷是否絕對路徑
	if(szNodeName[0] == '/' || szNodeName[0] == '\\')
	{
		pCurrentElement = m_DomTree.getDocumentElement();
		begin = 1;	
	}
	else
	{
		if(m_CurrentElement != NULL)
			pCurrentElement = m_CurrentElement;
		else
		{
			pCurrentElement = m_DomTree.getDocumentElement();
			m_CurrentElement = pCurrentElement;
		}
	}
	
	pParentElement = pCurrentElement;

	string pTmpnode = szNodeName;
	
	int m_PosBgn = pTmpnode.find_last_of("/");

	if(m_PosBgn == string::npos)
	{
		pCurrentElement = pCurrentElement->AddChild(szNodeName,NULL);		
	}
	else if(begin == 1 && m_PosBgn == 0)
	{
		pCurrentElement = pCurrentElement->AddChild(szNodeName + 1,NULL);
	}
	else
	{
		
		m_PosBgn = 0;
		int m_PosCur = m_PosBgn;
		
		m_PosBgn = pTmpnode.find("/",m_PosCur + 1);
		while(m_PosBgn != string::npos)
		{			
			pCurrentElement = SearchElement((char *)pTmpnode.substr(0,m_PosBgn).c_str());
			if(!pCurrentElement)
			{
				pCurrentElement = pParentElement->AddChild(pTmpnode.substr(m_PosCur,m_PosBgn - m_PosCur).c_str(),NULL);
			}
			m_PosCur = m_PosBgn + 1;
			m_PosBgn = pTmpnode.find("/",m_PosCur);
			pParentElement = pCurrentElement;
		}
		m_PosBgn = pTmpnode.size();
		pCurrentElement = pParentElement->AddChild(pTmpnode.substr(m_PosCur,m_PosBgn - m_PosCur).c_str(),NULL);
		
	}
	
	//m_CurrentElement = pCurrentElement;
	return pCurrentElement;
}

bool CPacket::SetCurrentElement(char szNodeName[])
{
	DOMElement * pCurrElem = SearchElement(szNodeName);
	if(pCurrElem == NULL) return false;
	m_CurrentElement = pCurrElem;
	return true;
}

bool CPacket::GetElementValue(char * szNodeName, char * szOutBuf)
{
	DOMElement * elem = SearchElement(szNodeName);
	if(elem == NULL) return false;

	//XMLString::transcode(elem->getTextContent(), szOutBuf, TRANSCODESIZE);
	strcpy(szOutBuf,elem->getTextContent());
		
	return true;
}

bool CPacket::GetElementValue(char *szNodeName, char *szOutBuf, char *szProper, char *szId)
{
	DOMElement * elem = SearchElement(szNodeName,szProper,szId);
	if(elem == NULL) return false;

	//XMLString::transcode(elem->getTextContent(), szOutBuf, TRANSCODESIZE);
	strcpy(szOutBuf,elem->getTextContent());
		
	return true;
}

bool CPacket::GetElementAttr(DOMElement * pelem, char * szAttrName, string& szAttrValue)
{
	if(pelem == NULL)
	{
		return false;
	}
	pelem->GetAttribute(szAttrName, szAttrValue);
	
	return true;
}
	
bool CPacket::GetElementAttr(char * szNodeName, char * szAttrName, string& szAttrValue)
{
	DOMElement * elem = SearchElement(szNodeName);
	if(elem == NULL)
	{
		return false;
	}
	elem->GetAttribute(szAttrName, szAttrValue);
	
	return true;
}	
	
bool CPacket::SetElementAttr(char * szNodeName, char * szAttrName, char * szAttrValue)
{
	DOMElement * elem = SearchElement(szNodeName);
	if(elem == NULL)
	{
		return false;
	}
	elem->SetAttribute(szAttrName, szAttrValue);
	return true;
}

bool CPacket::SetElementAttr(DOMElement * pelem, char * szAttrName, char * szAttrValue)
{
	if(pelem == NULL) return false;
	pelem->SetAttribute(szAttrName, szAttrValue);
	return true;
}


bool CPacket::SetElementValue(char * szNodeName, char * szinBuf)
{
	DOMElement * elem = SearchElement(szNodeName);
	if(elem == NULL)
	{
		//m_LastError = AD_ERROR_ERROR;
		return false;
	}
	elem->setTextContent(szinBuf);
	return true;
}

bool CPacket::SetElementValue(DOMElement * pelem, char * szinBuf)
{
	if(pelem == NULL) return false;
	pelem->setTextContent(szinBuf);
	return true;
}

bool CPacket::Initialize()
{
	try
	{			
		DOMElement * pCurrentElement = m_DomTree.getDocumentElement();
		if(!pCurrentElement)
			return false;
			
	
		string rc = pCurrentElement->get_tag();
		if(rc.size() == 0)
			pCurrentElement->set_tag("Xml");
		m_CurrentElement = pCurrentElement;
		
	    m_bInitFlag = true;
	}
	catch(...)
	{
		
		return false;
	}
	return true;
}

void CPacket::ResetCurrentNode()
{
	m_CurrentElement = m_DomTree.getDocumentElement();
}

int CPacket::split_bychar(vector<string> & vec, const string& str, const char seperate)
{
	string::size_type pos1, pos2;
	string word;
	pos1 = pos2 = 0;
	vec.clear();
	while((pos2=str.find_first_of(seperate, pos1)) != string::npos)
	{
		word = str.substr(pos1, pos2-pos1);
		pos1 = pos2+1;
		if(!word.empty()) vec.push_back(word);
	}
	word = str.substr(pos1);
	if(!word.empty())vec.push_back(word);
	return 0;
}


int CPacket::BuiltTree(const char *pBuf, int nBufSize)
{
	int rc = m_DomTree.LoadXML(pBuf,nBufSize);
	m_CurrentElement = m_DomTree.getDocumentElement();
	return rc;
}

string CPacket::GetXml(DOMElement* pElement)
{

	m_DomTree.BuildXML(pElement);

	return m_DomTree.get_xml();
}

int CPacket::SetRootTag(string pTag)
{
	DOMElement* m_Element = m_DomTree.getDocumentElement();
	if(m_Element)
	{
		m_Element->set_tag(pTag.c_str());
		return 1;
	}
	else
	{
		return 0;
	}	
}

int CPacket::BuiltTree(MLPCSTR pXmlPath)
{
	int rc = m_DomTree.LoadXML(pXmlPath);
	m_CurrentElement = m_DomTree.getDocumentElement();
	return rc;
}

DOMElement * CPacket::SearchNextElement(bool pMoveNext)
{
	DOMElement * pCurrentElement = m_CurrentElement->GetNextElement();
	if(pMoveNext)
	{
		if(pCurrentElement)
			m_CurrentElement = pCurrentElement;
	}
	return pCurrentElement;
}

DOMElement * CPacket::SearchNextElement(char *szNodeName, char *szProper, char *szId)
{
	DOMElement * pCurrentElement = m_CurrentElement;
	if(!pCurrentElement)
		return NULL;
	string m_NodeName;
	string m_Proper;
	string m_Id;

	m_NodeName = szNodeName;

	if(szProper)
		m_Proper = szProper;
	if(szId)
		m_Id = szId;

	while((pCurrentElement = pCurrentElement->GetNextElement()) != NULL)
	{
		string tmp = pCurrentElement->getTextContent();
		if(pCurrentElement->get_tag() == m_NodeName)
		{
			if(szProper)
			{
				string AtrrValue;
				pCurrentElement->GetAttribute(m_Proper.c_str(),AtrrValue);
				
				if(m_Id != AtrrValue)
					continue;
			}
			break;
		}
	}
	return pCurrentElement;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美videos大乳护士334| 欧美日韩综合在线免费观看| 亚洲va国产va欧美va观看| 国产精品久久久久久久久久久免费看| 久久精品一区蜜桃臀影院| 欧美成人video| 久久亚洲私人国产精品va媚药| 日韩欧美精品在线| 久久婷婷久久一区二区三区| 欧美精品一区二区三区高清aⅴ| 欧美va在线播放| 国产欧美日韩在线观看| 国产精品久久久久久久久图文区 | 91麻豆精品国产自产在线| 欧美日韩一本到| 日韩美女在线视频| 日本一区二区三区在线不卡| 国产精品久久99| 亚洲国产一区二区视频| 免费人成在线不卡| 成人免费看的视频| 欧美在线不卡视频| 精品国产一区二区三区忘忧草| 久久精品在线免费观看| 亚洲自拍偷拍九九九| 免费在线成人网| 成人av网在线| 777亚洲妇女| 国产精品拍天天在线| 亚洲一区二区高清| 国产精品亚洲综合一区在线观看| 91蜜桃网址入口| 91精品国产色综合久久不卡蜜臀 | 亚洲国产视频一区| 国产综合色产在线精品| 日韩精品一区二区三区在线播放| 欧美精品一区二区三区蜜桃| 亚洲人被黑人高潮完整版| 日韩国产一二三区| 成人性生交大合| 欧美电影影音先锋| 亚洲欧美日韩中文播放| 韩国成人在线视频| 欧美日韩成人激情| 成人欧美一区二区三区视频网页| 视频一区二区三区中文字幕| 91免费版在线| 国产亚洲人成网站| 蜜臀国产一区二区三区在线播放 | 夜夜精品视频一区二区| 精品在线播放免费| 欧美精品v国产精品v日韩精品| 日本一区二区三区高清不卡| 欧美aaaaaa午夜精品| 欧美唯美清纯偷拍| 亚洲视频小说图片| 成人综合激情网| 精品国产乱码久久久久久免费 | 成人精品电影在线观看| 日韩精品中文字幕在线不卡尤物| 一区二区三区成人| 国产黄色91视频| 亚洲精品一区二区三区99| 婷婷国产在线综合| 欧美日韩一区国产| 亚洲精品日韩一| 91蜜桃免费观看视频| 国产精品午夜免费| 粉嫩蜜臀av国产精品网站| 精品成人佐山爱一区二区| 久久成人综合网| 精品少妇一区二区三区视频免付费 | 欧美一个色资源| 日韩—二三区免费观看av| 欧美日韩小视频| 亚洲丶国产丶欧美一区二区三区| 91黄视频在线观看| 亚洲一区二区成人在线观看| 日本道在线观看一区二区| 一区二区三区在线观看欧美 | 日日摸夜夜添夜夜添亚洲女人| 日本韩国一区二区三区视频| 亚洲三级小视频| 欧美性一级生活| 五月天激情综合网| 欧美哺乳videos| 国内精品在线播放| 国产精品视频一区二区三区不卡| 成人夜色视频网站在线观看| 中文字幕视频一区| 在线观看不卡一区| 日韩二区三区在线观看| 欧美成人猛片aaaaaaa| 国产精品1区二区.| 亚洲摸摸操操av| 91精品婷婷国产综合久久性色| 麻豆成人91精品二区三区| 久久夜色精品一区| 91猫先生在线| 日韩高清一区在线| 国产亚洲欧美激情| 91麻豆swag| 免费成人深夜小野草| 久久久久久亚洲综合| 91热门视频在线观看| 丝袜脚交一区二区| 国产日产欧美精品一区二区三区| 97国产一区二区| 男女男精品视频| 国产精品乱码一区二三区小蝌蚪| 精品视频免费看| 国产馆精品极品| 亚洲一二三专区| 欧美国产综合一区二区| 欧美日韩免费视频| 成人激情免费网站| 亚洲精品第一国产综合野| 亚洲欧美日韩久久| 国产91丝袜在线18| 亚洲午夜电影网| 久久久久国产一区二区三区四区| 色综合av在线| 国产成人综合视频| 日韩激情一二三区| 亚洲欧美偷拍三级| 国产性天天综合网| 欧美裸体bbwbbwbbw| 91网站最新网址| 国产成人精品一区二区三区四区| 香蕉久久夜色精品国产使用方法| 中文字幕精品一区二区精品绿巨人 | 久久久久久电影| 欧美一三区三区四区免费在线看| av中文字幕不卡| 国产成人在线网站| 久久成人综合网| 婷婷综合另类小说色区| 亚洲精品视频在线看| 国产精品传媒视频| 国产亚洲一二三区| 亚洲精品一区二区三区福利| 日韩一区二区中文字幕| 欧美羞羞免费网站| 欧美亚洲动漫另类| 欧美亚洲一区二区在线观看| 94-欧美-setu| 99在线精品观看| 不卡影院免费观看| 成人黄色a**站在线观看| 国产成人av影院| 国产乱码精品一区二区三区五月婷| 蜜桃av一区二区三区| 五月婷婷激情综合| 日韩一区精品字幕| 青椒成人免费视频| 久久99精品久久久久久动态图| 日本亚洲一区二区| 蜜臀精品一区二区三区在线观看| 日本成人在线看| 精品制服美女久久| 国产专区综合网| 懂色av一区二区三区免费观看| 成人美女在线观看| 不卡的av电影| 色播五月激情综合网| 欧美性一二三区| 日韩午夜在线观看| 1区2区3区国产精品| 中文字幕日韩av资源站| 亚洲伊人伊色伊影伊综合网| 午夜视频在线观看一区二区| 青青草国产精品亚洲专区无| 极品美女销魂一区二区三区| 国产精品亚洲专一区二区三区| 不卡的电视剧免费网站有什么| 欧美性一区二区| 久久久噜噜噜久噜久久综合| 亚洲欧美日韩一区二区| 天堂av在线一区| 国产电影一区在线| 日本精品一区二区三区四区的功能| 91精品视频网| 中文一区二区在线观看| 亚洲一区视频在线观看视频| 蜜桃视频在线一区| av在线这里只有精品| 7777精品伊人久久久大香线蕉| 久久综合九色综合97_久久久| 亚洲色图视频网| 免费xxxx性欧美18vr| 99re在线精品| 欧美va在线播放| 亚洲国产精品麻豆| 成人自拍视频在线| 欧美日本国产一区| 国产精品国产成人国产三级 | 久久免费偷拍视频| 亚洲电影在线免费观看| 国产成人精品一区二| 精品视频一区 二区 三区|