C实现创建XML文件 --- 学习笔记(一)

一、创建XML文档的步骤

  1. 【xmlNewDoc】 创建一个文档指针pdoc
  2. 【xmlNewNode】创建一个节点proot,用来代表根节点
  3. 【xmlDocSetRootElement】将proot这个节点设置为根节点
  4. 【xmlNewChild】添加proot的子节点或者孙子结点,并设置好所有节点的内容和属性
  5. 【xmlSaveFile】保存xml文件
  6. 【xmlFreeDoc】最后关闭文档指针,并释放相应内存

二、目标xml结构

<MyLove>
    <name>JJLin</name>
    <birth>19810327</birth>
    <songs>
        <1>Always Online</1>
        <2>I Pray For You</2>
        <3>One Shot</3>     
    </songs>
</MyLove>

三、实现代码


1.根据xml格式,定义结构体
typedef struct mylove{
		char name[NAMELEN];
		long birth;
		char song1[NAMELEN];
		char song2[NAMELEN];
		char song3[NAMELEN];
}mylove_t;

2.创建mylove.xml函数
int create_demo_xml(mylove_t love)
{
    xmlDocPtr pdoc = NULL;
    xmlNodePtr proot = NULL,songsnode = NULL;
    // 创建一个文档指针pdoc
    pdoc = xmlNewDoc(BAD_CAST "1.0");
    // 创建一个节点指针proot
    proot = xmlNewNode(NULL, BAD_CAST "mylove");
    // 设置proot这个节点作为根节点
	xmlDocSetRootElement(pdoc, proot);
	// 在根节点中直接创建节点
    xmlNewStrChild(proot,NULL,"name",love.name);
    xmlNewLongChild(proot,NULL,"birth",love.birth);
    
    // 创建一个节点,设置内容和属性
    songsnode = xmlNewNode(NULL,BAD_CAST "songs");
    xmlNewStrChild(songsnode,NULL,"1",love.song1);
    xmlNewStrChild(songsnode,NULL,"2",love.song2);
    xmlNewStrChild(songsnode,NULL,"3",love.song3);
	// 然后将songsnode节点加入根节点
	xmlAddChild(proot,songsnode);
	// 存储xml文档
	xmlSaveFormatFile("mylove.xml", pdoc, 1);
	// 释放文档内节点动态申请的内存
	xmlFreeDoc(pdoc);
	return 0;
}

3.main函数
int main(int argc, char **argv) {
	 int ret = 0;
	 mylove_t love = {
		"JJLin",
		19810327,
		"Always Online",
		"I Pray For You",
		"One Shot",
	};
	// 这里可以加返回值判断
	ret = create_demo_xml(love);
	if(ret){
		  fprintf(stderr, "create mylove.xml failed\n");
	}else{
		 fprintf(stderr, "create mylove.xml success\n");
	}
	return 0;
}

四、执行结果
mylove

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值