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

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

?? xmlwf.c

?? 一個基于SAX分析方法的XML文檔解析函數包
?? C
?? 第 1 頁 / 共 3 頁
字號:

		xml_char = GetChar();
	}

	if(((PXML_Parser)parser)->commentHandler != NULL)
		((PXML_Parser)parser)->commentHandler(pComment->data);

	FreeXML_String(pComment);
	SkipSpace();
}

void XML_Element(Pxml_parser parser, int* depth, const PXML_String pUpElementName)
{
	PXML_String pElementName = CreateXML_String();
	PXML_String pDataChar = CreateXML_String();
	PXML_String pForCmp = CreateXML_String();
	PAttributes pAttri = AtrributesCreate();
	PAttriPairs pattriPairs = NULL;
	XML_Char currentChar;
	_BOOL isCdata = FALSE;
	int depthOfThisElement = *depth;

	XML_ASSERT_VOID(pAttri);
	XML_ASSERT_VOID(pForCmp);
	XML_ASSERT_VOID(pDataChar);
	XML_ASSERT_VOID(pElementName);

com3:SkipSpace();

	currentChar = GetChar();

	if(currentChar == '<' ){
		currentChar = GetChar();
		if(currentChar == '/'){
			if(*depth == 0){
				ErrorHappen(parser, "Error in syntax of start of element: \"</element_name>\" can not be the start of element.");
				return;
			}
			/**
			XML_ClearStr(pElementName);
			XML_StrStrCat(pElementName, pUpElementName);			
			goto EndOfElement;
			*/
			GoBack(2);
			*depth = *depth - 1;
			return;
		}else{
			if(currentChar == '!'){
					currentChar = GetChar();
					if(currentChar == '-'){
						currentChar = GetChar();
						if(currentChar == '-'){
							ProcessCommentInElement(parser);
							goto com3;
						}else{
							ErrorHappen(parser, "Error in syntax of element:Invalid /'!/' appears after \'<\'.");
							return;
						}
					}else{
						ErrorHappen(parser, "Error in syntax of element:Invalid /'!/' appears after \'<\'.");
						return;
					}
			}
			GoBack(2);
		}
	}else{
			GoBack(1);			
	}

	SkipSpace();
	currentChar = GetChar();

	if(currentChar != '<'){
		ErrorHappen(parser, "Error in syntax:Invalid in start of the element, \"< element_name>\" expected.");
		return;
	}
	
	proper_name(parser, pElementName);	
	
	SkipSpace();

	currentChar=GetChar();	
	while(currentChar != '/' && currentChar != '>'){		
		GoBack(1);
		pattriPairs = Proper_token( parser);
		XML_ASSERT_VOID(pattriPairs);
		addAttribute(pAttri, pattriPairs);
		SkipSpace();
		currentChar = GetChar();
	}

	if(currentChar == '/'){
		currentChar = GetChar();
		if(currentChar != '>'){
			ErrorHappen(parser, "Error in element syntax:Invalid end string of element, no \" />\" exists.");
		    return;
		}
		*depth = *depth + 1;
		if(((PXML_Parser)parser)->startElementHandler != NULL)
			((PXML_Parser)parser)->startElementHandler( ((PXML_Parser)parser)->userData, pElementName->data, pAttri);
		*depth = *depth - 1;
		if(((PXML_Parser)parser)->endElementHandler != NULL){
			((PXML_Parser)parser)->endElementHandler(((PXML_Parser)parser)->userData, pElementName->data, pAttri);
		}
		return;
	}else{
		if(currentChar != '>'){
			ErrorHappen(parser, "Error in element syntax:Invalid string of element,  \">\" expected.");
		    return;
		}
	}
		*depth = *depth + 1;
		if(((PXML_Parser)parser)->startElementHandler != NULL)
			((PXML_Parser)parser)->startElementHandler( ((PXML_Parser)parser)->userData, pElementName->data, pAttri);
		
		SkipSpace();

com1:	currentChar = GetChar();		
		
        if(currentChar == '<'){
			currentChar = GetChar();
			if(currentChar == '/'){
				goto EndOfElement;
			}else if(currentChar == '!'){
				currentChar = GetChar();
				if(currentChar == '-'){
					currentChar = GetChar();
						if(currentChar == '-'){
							ProcessCommentInElement( parser);
							SkipSpace();
							goto com1;
						}else{
						ErrorHappen(parser, "Error in syntax of comment in element:\'-\' should not appear after \'<\'.");
						return;
						}
					
				}else{
					if(currentChar != '['){
						ErrorHappen(parser, "Error in syntax of :\'-\' or \'[\' should not appear after \'<\'.");
						return;
					}
				}

				XML_ClearStr(pForCmp);
				GetXMLCharUntil('[', parser, pForCmp);
			    if(!XML_StrPCharCmp(pForCmp, JTEXT("cdata")) || !XML_StrPCharCmp(pForCmp, JTEXT("CDATA"))) isCdata = TRUE;
				else{
					ErrorHappen(parser, "Error in element syntax:Invalid string of element,  \"![cdata\" expected.");
		            return;
				}
			}else{ 
				GoBack(2);
			}			
		}else{
			GoBack(1);
		}		
		
		XML_ElementText(parser, pDataChar, isCdata);
/**		
printf("[%d]\n",pDataChar->length);
if(pDataChar->length)  printf(pDataChar->data);
*/
		if(((PXML_Parser)parser)->characterDataHandler != NULL)
			((PXML_Parser)parser)->characterDataHandler( ((PXML_Parser)parser)->userData, pDataChar->data, pDataChar->length, isCdata);
		
		SkipSpace();

		if(isCdata){
			XML_ClearStr(pForCmp);
			GetXMLCharUntil('>', parser, pForCmp);
			if(XML_StrPCharCmp(pForCmp, JTEXT("]]"))){
				ErrorHappen(parser, "Error in element syntax:Invalid end string of element,  \"[[>\" expected.");
		        return;
			} 
		}

com2:	SkipSpace();

    	currentChar = GetChar();

		if(currentChar == '<' ){
			currentChar = GetChar();
			if(currentChar == '/') goto EndOfElement;
			else{
				if(currentChar == '!'){
					currentChar = GetChar();
					if(currentChar == '-'){
						currentChar = GetChar();
						if(currentChar == '-'){
							ProcessCommentInElement( parser);
							goto com2;
						}else{
							ErrorHappen(parser, "Error in syntax of element:Invalid /'!/' appears after \'<\'.");
							return;
						}
					}else{
						ErrorHappen(parser, "Error in syntax of element:Invalid /'!/' appears after \'<\'.");
						return;
					}
				}
				GoBack(2);
			}
		}else{
			GoBack(1);			
		}

		while(depthOfThisElement < *depth){			
//			printf("\n%d\n", *depth);
			XML_Element(parser, depth, pElementName);
		}

		*depth = *depth + 1;
/*
		SkipSpace();

		currentChar = GetChar();	
		*/
////////////////
com4:	SkipSpace();

    	currentChar = GetChar();

		if(currentChar == '<' ){
			currentChar = GetChar();
			if(currentChar == '/') goto EndOfElement;
			else{
				if(currentChar == '!'){
					currentChar = GetChar();
					if(currentChar == '-'){
						currentChar = GetChar();
						if(currentChar == '-'){
							ProcessCommentInElement( parser);
							goto com4;
						}else{
							ErrorHappen(parser, "Error in syntax of element:Invalid /'!/' appears after \'<\'.");
							return;
						}
					}else{
						ErrorHappen(parser, "Error in syntax of element:Invalid /'!/' appears after \'<\'.");
						return;
					}
				}
				ErrorHappen(parser,  "Error in element syntax:Invalid end string of element,  \"</+elementName>\" expected.");
		    return;
			}
		}else{
			ErrorHappen(parser,  "Error in element syntax:Invalid end string of element,  \"</-elementName>\" expected.");
		    return;			
		}
		///////////////////
/*
		if(currentChar != '<'){
			ErrorHappen(parser,  "Error in element syntax:Invalid end string of element,  \"</ elementName>\" expected.");
		    return;
		}

		currentChar = GetChar();
//			putchar(currentChar);
		if(currentChar != '/'){
			ErrorHappen(parser, "Error in element syntax:Invalid end string of element,  \"</ elementName>\" expected.");
		    return;
		}
		*/
EndOfElement:
		SkipSpace();
		XML_ClearStr(pForCmp);
		proper_name(parser,  pForCmp);

		SkipSpace();

		currentChar = GetChar();

		if(XML_StrCmp(pElementName,pForCmp)){
/*
putchar('\n');
printf(pForCmp->data);
printf("[%d]", pForCmp->length);
putchar('\n');
printf("[%d]", STRLEN(pForCmp->data));
putchar('\n');
printf("[%d]", strcmp(pForCmp->data,pElementName->data));
putchar('\n');
printf(pElementName->data);
printf("[%d]", STRLEN(pElementName->data));
putchar('\n');
printf(pUpElementName->data);
printf("[%d]", STRLEN(pUpElementName->data));
putchar('\n');
for(; i < pForCmp->length ; i++){
	printf("%c, ", pForCmp->data[i]);
}
*/          
			ErrorHappen(parser, "Error in element syntax:Invalid end string of element,  \"</elementName>\" expected.");
		    return;
		}
		*depth = *depth - 1;
		if(((PXML_Parser)parser)->endElementHandler != NULL)
			((PXML_Parser)parser)->endElementHandler(((PXML_Parser)parser)->userData, pElementName->data, pAttri);
//	}

	FreeXML_String(pElementName);
	FreeXML_String(pDataChar);
	FreeXML_String(pForCmp);
	AttributesFree(pAttri);
}
  //End: Element process function series

  //Start: Document process function series
void XML_Document(Pxml_parser parser)
{
	XML_Char xml_char;
	_BOOL goOut = FALSE;
	int depthOfElement = 0;

	XML_Header(parser);

	while(!goOut){
	 	SkipSpace();
		xml_char = GetChar();
		if(xml_char  != '<'){
			ErrorHappen(parser, "Error in syntax:Invalid character before element or instruction...");
			return;
		}

		xml_char = GetChar();

		if(xml_char == '!'){
			xml_char = GetChar();
			if(xml_char == '-'){
				xml_char = GetChar();
				if(xml_char != '-'){
					ErrorHappen(parser, "Error in syntax:Invalid start string of comment.");
					return;
				}		
				XML_Comments(parser);
			}else{
				GoBack(1);				
				XML_Declare(parser);
			}
		}else if(xml_char=='?'){			
			XML_Instruct(parser);
		}else{
			GoBack(2);
			XML_Element(parser, &depthOfElement, NULL);
			goOut = TRUE;
		} 
	}

	if(((PXML_Parser)parser)->endDocumentHandler)
		((PXML_Parser)parser)->endDocumentHandler(((PXML_Parser)parser)->userData );
}
  //End: Document process function series


// End the functions to process the recusion down analysis.
/**
The function to parse a xml file inputed in streamMode.
*/
int XML_doParse(Pxml_parser parser)
{
	struct   tm*   ptime;
	time_t nowTime;
	FILE* log = fopen("c:\\XMLParser.log", "a+");

	if(!parser)
		if(log){			
			if(parser == NULL){
				fputs("The pointer to XML_Parser passed by reference is invalid!\n", log);
				fclose(log);
				return 0;
			}
		}else{
			return 0;
		}	

	time(&nowTime);
	ptime = localtime(&nowTime);

	if( log != NULL)		
		fprintf(log, "-------------------%d-%d-%d  %d:%d:%d--------------------\n", 
		ptime->tm_mon+1, ptime->tm_mday, ptime->tm_year+1900, ptime->tm_hour, ptime->tm_min, ptime->tm_sec);	
	
	fclose(log);

	row = 1;
	col = 1;

	XML_Document(parser);

	return 1;	
}


void test()
{	

/*printf("%d\n", STRLEN(ascii2));
	if(IsMemberOf(250, ascii2, STRLEN(ascii2))) printf("IsmemberOf function is right.");
*/
	XML_Char c = GetChar();
	while(c != EOF){
		//putchar(GetChar());
		GetChar();
	};

  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线一区二区三区| 中文字幕欧美区| 欧美影视一区二区三区| 91丨九色丨蝌蚪丨老版| 成人性色生活片| av一本久道久久综合久久鬼色| 高清在线不卡av| 国产成人av自拍| www.视频一区| 欧洲一区在线观看| 欧美老女人第四色| 日韩一级片网站| 2023国产精品自拍| 国产精品无码永久免费888| 日韩一区欧美小说| 亚洲一卡二卡三卡四卡| 偷拍一区二区三区四区| 热久久免费视频| 国产精品一二一区| 99久久久国产精品| 欧美性videosxxxxx| 欧美一区二区国产| 久久精品免费在线观看| 国产精品久久久久久久久快鸭| 亚洲欧美区自拍先锋| 亚洲成人久久影院| 精品一区二区三区av| 国v精品久久久网| 色乱码一区二区三区88| 欧美男人的天堂一二区| 久久伊人中文字幕| 一区免费观看视频| 日韩国产在线观看| 国产传媒一区在线| 欧美专区在线观看一区| 欧美一级电影网站| 国产情人综合久久777777| 亚洲天堂免费看| 日产国产欧美视频一区精品| 国产精品99久久不卡二区| 色综合久久天天| 欧美tickle裸体挠脚心vk| 国产日韩av一区二区| 亚洲动漫第一页| 国内精品国产成人| 色综合色综合色综合| 日韩无一区二区| 亚洲欧美日韩久久| 久久99精品久久久| 欧美在线高清视频| 国产日产精品1区| 午夜精品在线视频一区| 丁香激情综合国产| 91精品国产一区二区三区香蕉| 欧美国产日韩一二三区| 蜜桃av一区二区在线观看| 不卡av免费在线观看| 日韩欧美一级特黄在线播放| 亚洲欧美综合色| 久久精品国产**网站演员| 色狠狠一区二区| 久久久国产精品午夜一区ai换脸| 亚洲成人一区二区| 成人av在线资源网站| 精品久久久久一区| 午夜影院久久久| 色一情一乱一乱一91av| 久久久99免费| 日韩av午夜在线观看| 色94色欧美sute亚洲线路一ni | 久久久99精品免费观看不卡| 亚洲影视资源网| 成人黄色电影在线| 精品国产一区二区三区久久影院| 亚洲一区在线播放| 99久久精品国产网站| 国产亚洲欧美日韩在线一区| 人人精品人人爱| 欧美日韩一区高清| 一区二区三区 在线观看视频| 成人综合激情网| 久久久午夜精品理论片中文字幕| 五月天中文字幕一区二区| 91免费视频观看| 中文字幕在线不卡视频| 成人午夜激情片| 欧美经典一区二区| 国产精品自拍网站| 久久先锋影音av鲁色资源| 蜜臀久久99精品久久久久久9| 欧美日韩久久一区二区| 亚洲精品老司机| 在线免费视频一区二区| 亚洲欧美日韩国产中文在线| 99热在这里有精品免费| 中文字幕中文乱码欧美一区二区| 国产成人综合精品三级| 国产亚洲综合性久久久影院| 激情综合色播激情啊| 精品国产乱码久久| 激情深爱一区二区| 久久精品亚洲一区二区三区浴池| 蜜桃久久久久久久| 日韩精品中文字幕一区| 精品影院一区二区久久久| 精品成人一区二区三区四区| 激情五月激情综合网| 精品国产乱码久久久久久蜜臀| 久久国产日韩欧美精品| 久久亚洲春色中文字幕久久久| 国产尤物一区二区在线| 国产调教视频一区| 福利一区二区在线观看| 成人免费在线播放视频| 91国产免费看| 日韩精品一二区| 精品黑人一区二区三区久久| 国产综合一区二区| 久久精品视频网| youjizz国产精品| 亚洲激情图片小说视频| 欧美精品在线视频| 久久精工是国产品牌吗| 国产日产精品一区| 色婷婷综合久久| 亚洲成av人影院| 欧美精品一区二区三区很污很色的 | 欧美丝袜丝nylons| 男男视频亚洲欧美| 国产亚洲人成网站| 97成人超碰视| 首页欧美精品中文字幕| 欧美精品一区二区三区在线| 国产成人免费视频网站| 亚洲日本丝袜连裤袜办公室| 欧美综合欧美视频| 精品在线一区二区三区| 亚洲日本va午夜在线电影| 欧美理论电影在线| 粉嫩久久99精品久久久久久夜| 亚洲欧美国产高清| 欧美大片一区二区| www.激情成人| 日韩电影免费在线看| 欧美国产一区二区| 538在线一区二区精品国产| 国产剧情av麻豆香蕉精品| 一区二区三区不卡视频在线观看| 日韩精品中文字幕在线不卡尤物| av在线不卡观看免费观看| 五月天中文字幕一区二区| 国产欧美精品一区二区色综合朱莉| 欧美中文字幕一区二区三区亚洲| 美女视频一区二区三区| 亚洲桃色在线一区| 日韩三级电影网址| 一本到不卡免费一区二区| 精品无人区卡一卡二卡三乱码免费卡 | 国产精品天美传媒沈樵| 欧美丰满嫩嫩电影| 99精品1区2区| 久久黄色级2电影| 亚洲在线中文字幕| 国产网红主播福利一区二区| 7777精品久久久大香线蕉| 成人免费视频视频| 另类小说一区二区三区| 一区二区三区免费网站| 国产调教视频一区| 日韩欧美另类在线| 欧美日韩一区精品| 91社区在线播放| 丰满放荡岳乱妇91ww| 日本欧美肥老太交大片| 夜夜嗨av一区二区三区四季av| 国产欧美日韩精品a在线观看| 欧美一区午夜精品| 欧美调教femdomvk| 成人av在线资源网| 国产精品亚洲一区二区三区妖精 | 国产成人福利片| 久久99国产精品免费| 日本一不卡视频| 一区二区三区欧美日韩| 中文字幕一区二区三区在线不卡 | 久久成人av少妇免费| 亚洲一区二区三区视频在线播放 | 亚洲第一综合色| 亚洲三级在线播放| 国产精品拍天天在线| 久久精品一级爱片| 久久综合九色综合97_久久久| 欧美一区二区在线免费播放| 欧美久久久久久久久| 欧美日本在线视频| 欧美日韩一区二区电影| 欧美日韩小视频| 欧美性猛交一区二区三区精品| 在线一区二区三区四区五区 | 91电影在线观看|