XML文件写入

前面文章已经介绍了XML文件的DOM解析方法, 这篇文章简单说明一下写入. 

我自己用fprintf封装了几个函数, 具体如下, 很容易看懂:

cs_xml.h

#ifndef CS_XML_H
#define CS_XML_H



#include 
<stdio.h>


/* Add a node and a value(string) to XML */
int xml_add_node_val_str(FILE *fp, const char *node, char val[], int  tabs);

/* Add a node and a value(char) to XML */

int xml_add_node_val_char(FILE *fp, const char *node, char c, int  tabs);

/* Add a node and a value(long) to XML */

int xml_add_node_val_long(FILE *fp, const char *node, long n, int  tabs);

/* Add a node to XML */

int xml_add_node(FILE *fp, const char *node, int  tabs);


#endif

cs_xml.c

#include <stdio.h>
#include 
"cs_xml.h"


/* Add a node and a value(string) to XML */
int xml_add_node_val_str(FILE *fp, const char *node, char val[], int  tabs)
{
    
int ret = 0/* Return value */

    
int i = 0;   /* Index */

    
while (i <  tabs)
    {
        
if (fputc(' ', fp) ==
 EOF)
        {
            ret 
= -1
;
            
break
;
        }
        i
++
;
    }
    fprintf(fp, 
"<%s>%s</%s> ", (char *)node, (char *)val, (char *
)node);

    
return 0
;
}

/* Add a node and a value(char) to XML */

int xml_add_node_val_char(FILE *fp, const char *node, char c, int  tabs)
{
    
int ret = 0/* Return value */

    
int i = 0;   /* Index */

    
while (i <  tabs)
    {
        
if (fputc(' ', fp) ==
 EOF)
        {
            ret 
= -1
;
            
break
;
        }
        i
++
;
    }
    fprintf(fp, 
"<%s>%c</%s> ", (char *)node, c, (char *
)node);

    
return 0
;
}

/* Add a node and a value(long) to XML */

int xml_add_node_val_long(FILE *fp, const char *node, long n, int  tabs)
{
    
int ret = 0/* Return value */

    
int i = 0;   /* Index */

    
while (i <  tabs)
    {
        
if (fputc(' ', fp) ==
 EOF)
        {
            ret 
= -1
;
            
break
;
        }
        i
++
;
    }
    fprintf(fp, 
"<%s>%ld</%s> ", (char *)node, n, (char *
)node);

    
return 0
;
}

/* Add a node to XML */

int xml_add_node(FILE *fp, const char *node, int  tabs)
{
    
int ret = 0/* Return value */

    
int i = 0;   /* Index */

    
while (i <  tabs)
    {
        
if (fputc(' ', fp) ==
 EOF)
        {
            ret 
= -1
;
            
break
;
        }
        i
++
;
    }
    fprintf(fp, 
"<%s> ", (char *
)node);

    
return 0
;
}

 

这个是在项目中使用到的, 从数据库表中读出数据, 写到XML中, 再由中间件输出到其他服务器/客户端上.

由于读出的数据有char *, 有char, 有long(int)型, 因此封装了不同的函数, 还可以另行添加更多适应类型函数.

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金