最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現xml構造解析器

 更新時間:2016年07月03日 15:29:37   投稿:hebedich  
本文給大家分享的是使用C語言來實現xml構造解析器的方法和代碼,簡單易用,推薦給大家

純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;
}

相關文章

  • gdb調試命令的使用及總結

    gdb調試命令的使用及總結

    gdb是一個在UNIX環(huán)境下的命令行調試工具。如果需要使用gdb調試程序,請在gcc時加上-g選項。下面的命令部分是簡化版,比如使用l代替list等等
    2013-05-05
  • 詳解c++中的 static 關鍵字及作用

    詳解c++中的 static 關鍵字及作用

    這篇文章主要介紹了c++中的 static 關鍵字,在我們日常使用過程中,static通常有兩個作用,具體內容在文中給大家詳細介紹,需要的朋友可以參考下
    2020-02-02
  • C++設計模式編程之Flyweight享元模式結構詳解

    C++設計模式編程之Flyweight享元模式結構詳解

    這篇文章主要介紹了C++設計模式編程的Flyweight享元模式結構,享元模式在實現過程中主要是要為共享對象提供一個存放的"倉庫"(對象池),需要的朋友可以參考下
    2016-03-03
  • 詳解如何將Spire.XLS for C++集成到C++程序中

    詳解如何將Spire.XLS for C++集成到C++程序中

    Spire.XLS for C++ 是一個 Excel 庫,供開發(fā)人員在任何類型的 C++ 應用程序中操作 Excel 文檔(XLS、XLSX、XLSB 和 XLSM)。 本文演示了如何以兩種不同的方式將 Spire.XLS for C++ 集成到您的 C++ 應用程序中
    2023-03-03
  • C++ set到底是什么

    C++ set到底是什么

    這篇文章主要討論C++ 中得set到底是什么?在C++當中,這幾個東西的名字叫做vector、set和map,它們有一個共同的名字叫做STL(標準模板庫)容器。下面來看看文章是怎么介紹得吧,需要的朋友可以參考一下哦
    2021-11-11
  • C++中異常的深度解析

    C++中異常的深度解析

    異常處理機制允許程序中獨立開發(fā)部分能夠在運行時就出現的問題進行通信并做出相應的處理,這篇文章主要介紹了C++中異常的深度解析,需要的朋友可以參考下
    2025-03-03
  • c語言中實現數組幾個數求次大值

    c語言中實現數組幾個數求次大值

    這篇文章主要介紹了c語言中實現數組幾個數求次大值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Qt中暫停程序的幾種方法小結

    Qt中暫停程序的幾種方法小結

    本文主要介紹了Qt中暫停程序的幾種方法小結,包含了4種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • VSCode 搭建 Arm 遠程調試環(huán)境的步驟詳解

    VSCode 搭建 Arm 遠程調試環(huán)境的步驟詳解

    這篇文章主要介紹了VSCode 搭建 Arm 遠程調試環(huán)境的步驟詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C語言鍵盤控制走迷宮小游戲

    C語言鍵盤控制走迷宮小游戲

    這篇文章主要為大家詳細介紹了C語言鍵盤控制走迷宮小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論

乌兰浩特市| 砚山县| 兰坪| 长葛市| 白玉县| 清流县| 通州市| 罗平县| 台山市| 永善县| 莱芜市| 罗平县| 鹰潭市| 南江县| 灵川县| 定兴县| 明水县| 进贤县| 祁连县| 鄂伦春自治旗| 建始县| 凤山县| 津市市| 合阳县| 兴文县| 休宁县| 儋州市| 普兰店市| 彰化市| 卢湾区| 广饶县| 宣威市| 监利县| 缙云县| 象山县| 雷波县| 阿荣旗| 加查县| 阿拉善盟| 嘉兴市| 铅山县|