C语言实现xml构造解析器
纯C实现xml构造解析器,所有实现只有一个.c一个.h文件组成,简单易用,易于扩展。
#include
#include
#include
#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;
}
相关阅读:
jQuery中queue()方法用法实例
JavaWeb中使用JavaMail实现发送邮件功能实例详解
页面内容排序插件jSort使用方法
java连接Oracle数据库的工具类
与MSSQL对比学习MYSQL的心得(二)--显示宽度
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
win7 64位旗舰版电脑被唤醒之后显示器依然黑屏怎么办?
深入数据库通用的连接方式详解
JavaScript常用本地对象小结
Win7系统打开IE提示“堆栈满溢”的多种解决方案
Win10系统更新Realtek声卡驱动超时提示错误0x000005b4怎么办?
JavaScript利用构造函数和原型的方式模拟C#类的功能
C#读取目录下所有指定类型文件的方法
Mysql从5.6.14安全升级至mysql5.6.25的方法