php xml构造,C++_C语言实现xml构造解析器,纯C实现xml构造解析器,所有实 - phpStudy...

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的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值