如何用C语言生成简单格式的xml

所属分类: 软件编程 / C 语言 阅读数: 100
收藏 0 赞 0 分享
代码很简单,直接贴了。
复制代码 代码如下:

    #include <stdio.h> 

    static FILE *out = NULL; 
    static int tabs = 0; 

    void set_out_fp(FILE *fp) 
    { 
        out = fp; 
    } 

    void put(char *str) 
    { 
        fprintf(out, "%s", str); 
    } 

    void put_head(char *head) 
    { 
        put("<?"); 
        put(head); 
        put("?>\n"); 
    } 

    void out_tabs() 
    { 
        int i; 
        for(i=0; i < tabs; i++) 
        { 
            put("\t"); 
        } 
    } 

    void tag_start(char *tag) 
    { 
        out_tabs(); 
        put("<"); 
        put(tag); 
        put(">\n"); 
        tabs = tabs + 1; 
    } 

    void tag_end(char *tag) 
    { 
        tabs = tabs - 1; 
        out_tabs(); 
        put("</"); 
        put(tag); 
        put(">\n"); 
    } 

    void tag_value(char *tag, char *value) 
    { 
        out_tabs(); 
        put("<"); 
        put(tag); 
        put("\t"); 
        put("\"value\"=\""); 
        put(value); 
        put("\""); 
        put("\t/>\n"); 
    } 

    void tag_value_num(char *tag, long value) 
    { 
        out_tabs(); 
        put("<"); 
        put(tag); 
        put("\t"); 
        put("\"value\"="); 
        fprintf(out, "%d", value); 
        put("\t/>\n"); 
    } 

    int main() 
    {    
        FILE *fp = fdopen(1, "a"); 
        set_out_fp(fp); 

        put_head("xml version='1.0' encoding=\"GBK\""); 
        tag_start("投递信息"); 
        tag_start("硬件"); 

        tag_value_num("网卡", 1); 

        tag_end("硬件"); 
        tag_end("投递信息"); 

        fclose(fp); 

        return 0; 
    } 
更多精彩内容其他人还在看

从汇编看c++中变量类型的深入分析

本篇文章是对c++中的变量类型进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

从汇编看c++的默认析构函数的使用详解

本篇文章是对c++中默认析构函数的使用进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

基于c++中的默认拷贝函数的使用详解

本篇文章对c++中默认拷贝函数的使用进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

解析c++中的默认operator=操作的详解

本篇文章是对c++中的默认operator=操作的应用进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

解析c++中参数对象与局部对象的析构顺序的详解

本篇文章是对c++中参数对象与局部对象的析构顺序进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入c++中临时对象的析构时机的详解

本篇文章对c++中临时对象的析构时机进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

解析内存对齐 Data alignment: Straighten up and fly right的详解

对于所有直接操作内存的程序员来说,数据对齐都是很重要的问题.数据对齐对你的程序的表现甚至能否正常运行都会产生影响
收藏 0 赞 0 分享

深入内存对齐的详解

本篇文章是对内存对齐进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入C语言把文件读入字符串以及将字符串写入文件的解决方法

本篇文章是对C语言把文件读入字符串以及将字符串写入文件的方法进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解

本篇文章对Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享
查看更多