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

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

  1. c语言printf函数中的格式控制字符串,C++_C语言格式化输入输出函数详解,一:格式输出函数printf() 1 - phpStudy...

    C语言格式化输入输出函数详解 一:格式输出函数printf() 1.调用形式一般为:printf("格式化控制字符串",输出表列): 2.格式化控制字符串用于指定输出格式,它有三种 ...

  2. c语言怎么表示小写字母a到z,C++_C语言字符串快速压缩算法代码,通过键盘输入一串小写字母(a~z - phpStudy...

    C语言字符串快速压缩算法代码 通过键盘输入一串小写字母(a~z)组成的字符串. 请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1.仅压缩连续重复出 ...

  3. php邮件代码c语言,C++_C语言实现电子邮件地址验证程序,我们最经常遇到的验证,就是 - phpStudy...

    C语言实现电子邮件地址验证程序 我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮 ...

  4. XML (可扩展标记语言)

    XML (可扩展标记语言) 一. 标记语言 标记语言,是一种将文本(txt)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码. 当今广泛使用的标记语言是超文本标记语言(H ...

  5. java 解析标记语言_Java XML可扩展标记语言(eXtensible Markup Language)

    一.XMl 1.1.XML简介: XML指可扩展标记语言(eXtensible Markup Language),它是一种很像HTML的标记语言.XML的设计宗旨是传输数据,焦点是数据的内容,而HTM ...

  6. 考试自动评分系统C语言改错,基于XML结构的C语言考试的自动评分系统.doc

    基于XML结构的C语言考试的自动评分系统 摘 要:在C程序设计语言考试中为了解决定位难.一题多解和对于主观题没有统一的评价标准的情况,对考试系统中客观题和程序题的评分方法进行了研究.在比较结果的评分基 ...

  7. Android Studio翻译strings.xml为多国语言

    前言 做完android app后需要做多国语言支持怎么办?通过百度或GOOGLE翻译一个个操作是不切实际的. 参考过AndroidLocalizationer,发现需要申请KEY,太麻烦.继续找,发 ...

  8. 最优生成树c语言_C语言:数据结构-构造哈夫曼树

    给定n个权值的集合W={w1,w2,-.wn} 1.在W中选取两个最小的权作为兄弟结点,以它们的权值之和作为其父结点,得到一棵新树: 2.在W中删除上述已选取的权值,以它们的权值之和作为新的权值加入W ...

  9. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构...

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

  10. java创建多级xml树_月光软件站 - 编程文档 - Java - 用XSL与XML实现多级树形菜单

    XSL语言功能强大而奇妙.从前面的例子中,我们可以初步了解到,一个xsl文档中使用了很多类似"xsl:xxxxx"这样的标签,这些标签就是xsl语言的部分.一个xsl文档至少是由一 ...

最新文章

  1. OpenGL实现高度图
  2. mysql存储过程打不开了_请问mysql存储过程的问题,我找了几个例子一个都运行不起来,...
  3. BZOJ1054(搜索)
  4. 浏览器获取正确的scrollTop值
  5. VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式“.NET研究”建立UI测试(下)...
  6. 1.极限——例子_3
  7. Mybatis懒加载机制
  8. mysql-workbench 导入csv格式数据报错:Unhandled exception: Could not determine delimiter
  9. 15寸计算机显示器,苹果确认15寸RMBP支持全球首款5K显示器
  10. Scala中的“=”和“-”
  11. 【求救】如何调用Windows系统自带的“选择用户”、“选择组”的对话框?
  12. WinForm 去掉DataGridView最后一行的空白行,删除空白行
  13. 安卓/苹果手机直播声卡方案,实现一边直播一边充电功能
  14. 如何让电脑计算机d盘布局,创建MSR分区,解决“由于用户电脑存在一个不支持的用于UEFI固件的硬盘布局,因此系统无法安装”...
  15. 无需关注微信公众号破解openwrite验证
  16. 为什么1GB内存的苹果能完爆3GB内存的安卓机
  17. Python美股量化交易填坑记录——13c.Vegas隧道交易机器人(实盘记录)
  18. Git- Fast Forward和no fast forward
  19. 概率论-事件的概率--公理化定义(统计、古典、几何)
  20. 关于很狗的军训qwq

热门文章

  1. java我的世界1.6.2_我的世界1.6.2
  2. rds对mysql优化_RDS MySQL优化方案
  3. python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
  4. mysql 面试知识点笔记(三)联合索引的最左匹配原则
  5. OCEval-动态执行ObjectiveC的热修复方案
  6. Maven入门指南12:将项目发布到私服
  7. node.js Web实时消息后台服务器推送技术---GoEasy
  8. UI设计师——你是什么设计师?
  9. VC++ chap19 动态链接库 VC++ 孙鑫
  10. SSL证书配置注意事项