纯C实现xml构造解析器,所有实现只有一个.c一个.h文件组成,简单易用,易于扩展。
#include <string.h> #include <stdio.h> #include <stdlib.h> #include \"sxml.h\" #define LUA_SCRIPT \"function fun()\\n\\ int a;\\n\\ a = 10;\\n\\ return a;\\n\\ end\" int main() { sxml_file_info_t* info; char* tmp; const char* pstr; int line=1; char buff[128]={0}; sxml_doc_t* parser=NULL; sxml_doc_t* doc = sxml_doc_new(\"a.xml\",\"1.0\",\"GB2312\"); sxml_node_t* node = sxml_node_new(\"root\"); sxml_attr_t* attr = sxml_attr_new(\"age\",\"25\"); sxml_node_t* subnode = sxml_node_new(\"score\"); sxml_node_t* rawdata = sxml_rawdata_new(NULL,\"hello world!\",strlen(\"hello world!\")); sxml_node_t* rawdata2 = sxml_rawdata_new(NULL,\"hello world!\",strlen(\"hello world!\")); sxml_node_t* rawdata3 = sxml_rawdata_new(NULL,\"hello world!\",strlen(\"hello world!\")); sxml_node_t* rawdata4 = sxml_rawdata_new(\"raw\",\"rawdata\",strlen(\"rawdata\")); sxml_node_t* rawdata5 = sxml_rawdata_new(\"lua\",LUA_SCRIPT,strlen(LUA_SCRIPT)); sxml_node_t* innertext = sxml_innertext_new(\"内部字符串\"); sxml_node_t* comment = sxml_comment_new(\"注释\"); sxml_node_t* empty = sxml_empty_new(\"empty\"); sxml_add_attr2node(node,attr); attr = sxml_attr_new(\"sex\",\"man\"); sxml_add_attr2node(node,attr); attr = sxml_attr_new(\"语文\",\"95\"); sxml_add_attr2node(subnode,attr); attr = sxml_attr_new(\"数学\",\"100\"); sxml_add_attr2node(subnode,attr); attr = sxml_attr_new(\"英语\",\"98\"); sxml_add_attr2node(subnode,attr); sxml_add_subnode2node(node,subnode); sxml_add_subnode2node(node,rawdata); sxml_add_subnode2node(node,rawdata2); sxml_add_subnode2node(node,rawdata3); sxml_add_subnode2node(node,rawdata4); sxml_add_subnode2node(node,rawdata5); sxml_add_subnode2node(node,innertext); sxml_add_subnode2node(node,comment); sxml_add_subnode2node(node,empty); sxml_add_node2doc(doc,node); //printf(\"%s\\n\",sxml_doc_print_buffered(doc,16)); tmp = sxml_doc_print(doc); pstr = tmp; printf(\"%s\\n\", tmp); while((pstr = skip_line(pstr)))line++; printf(\"\\n\\n%d\\n\\n\", line); //printf(\"\\n\\n%s\\n\\n\",check_skip(\"<?xml version=\\\"1.0\\\" encoding=\\\"GB2312\\\"?>\",\"<?xml version=\\\\\\\"\")?\"YES\":\"NO\"); //copy_until(buff,\"<?xml version=\\\"1.0\\\" encoding=\\\"GB2312\\\"?>\",\"\\\" \"); //printf(\"\\n\\n%s\\n\\n\",buff); //sxml_save(doc); sxml_doc_free(doc); doc = NULL; free(tmp); //printf(\"aaaa...................\\n\"); //getchar(); parser = sxml_parse(\"a.xml\"); //tmp = sxml_doc_print(parser);//有问题,内存越界 tmp = sxml_doc_print_buffered(parser,16); printf(\"%s\\n\", tmp); free(tmp); sxml_save2file(parser,\"b.xml\"); sxml_doc_free(parser); return 0; }
本文地址:https://www.stayed.cn/item/9077
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我