C語(yǔ)言實(shí)現(xiàn)xml構(gòu)造解析器
純C實(shí)現(xiàn)xml構(gòu)造解析器,所有實(shí)現(xiàn)只有一個(gè).c一個(gè).h文件組成,簡(jiǎn)單易用,易于擴(kuò)展。
#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("內(nèi)部字符串");
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("語(yǔ)文","95");
sxml_add_attr2node(subnode,attr);
attr = sxml_attr_new("數(shù)學(xué)","100");
sxml_add_attr2node(subnode,attr);
attr = sxml_attr_new("英語(yǔ)","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);//有問(wèn)題,內(nèi)存越界
tmp = sxml_doc_print_buffered(parser,16);
printf("%s\n", tmp);
free(tmp);
sxml_save2file(parser,"b.xml");
sxml_doc_free(parser);
return 0;
}
相關(guān)文章
C++容器適配與棧的實(shí)現(xiàn)及dequeque和優(yōu)先級(jí)詳解
這篇文章主要介紹了C++容器適配與棧的實(shí)現(xiàn)及dequeque和優(yōu)先級(jí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10
C語(yǔ)言數(shù)據(jù)在內(nèi)存中的存儲(chǔ)流程深入分析
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-10-10
C語(yǔ)言container of()函數(shù)案例詳解
這篇文章主要介紹了C語(yǔ)言container of()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C++最短路徑Dijkstra算法的分析與具體實(shí)現(xiàn)詳解
經(jīng)典的求解最短路徑算法有這么幾種:廣度優(yōu)先算法、Dijkstra算法、Floyd算法。本文是對(duì)?Dijkstra算法的總結(jié),該算法適用于帶權(quán)有向圖,可求出起始頂點(diǎn)到其他任意頂點(diǎn)的最小代價(jià)以及對(duì)應(yīng)路徑,希望對(duì)大家有所幫助2023-03-03
Visual?Studio?2022?安裝低版本?.Net?Framework的圖文教程
這篇文章主要介紹了Visual?Studio?2022?如何安裝低版本的?.Net?Framework,首先打開?Visual?Studio?Installer?可以看到vs2022?只支持安裝4.6及以上的版本,那么該如何安裝4.6以下的版本,下面將詳細(xì)介紹,需要的朋友可以參考下2022-09-09
C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
MFC設(shè)置對(duì)話框焦點(diǎn)的方法簡(jiǎn)述
這篇文章主要介紹了MFC設(shè)置對(duì)話框焦點(diǎn)的方法簡(jiǎn)述,主要講述了兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2014-10-10
c與c++之間的相互調(diào)用及函數(shù)區(qū)別示例詳解
這篇文章主要為大家介紹了c與c++相互調(diào)用的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
用C語(yǔ)言實(shí)現(xiàn)從文本文件中讀取數(shù)據(jù)后進(jìn)行排序的功能
這是一個(gè)十分可靠的程序,這個(gè)程序的查錯(cuò)能力非常強(qiáng)悍。程序包含了文件操作,歸并排序和字符串輸入等多種技術(shù)。對(duì)大家學(xué)習(xí)C語(yǔ)言很有幫助,有需要的一起來(lái)看看。2016-08-08

