C/C++解析XML格式文件

前面我们讲了生成XML文件, 但是 XML文件怎么解析呢?

要解析的文件:

代码Demo

#include <iostream>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <mxml.h>

using namespace std;
static int Debug = 1;

int main(int argc, const char* argv[])
{
	if(argc != 2){
		fprintf(stderr, "./a.out dest_name\n");
		exit(-1);
	}

	FILE* rfp;
	int count = 0;
	while(!(rfp = fopen(argv[1], "r")) && count < 5){
		fprintf(stderr, "file open error %d\n", ++count);
	}

	if(count == 5){
		exit(-2);
	}
	if(Debug) printf("file:%s, rfp:%p, count:%d\n", argv[1], rfp, count);


	mxml_node_t* root = NULL;
	mxml_node_t* people = NULL;
	mxml_node_t* object = NULL;
	mxml_node_t* name = NULL;
	mxml_node_t* age = NULL;
	mxml_node_t* sex = NULL;

	people = mxmlLoadFile(NULL, rfp, MXML_NO_CALLBACK);  // 根标签
	object = mxmlFindElement(people, people, "object", NULL, NULL, MXML_DESCEND);
	while(object){

		name = mxmlWalkNext(object, root, MXML_DESCEND_FIRST);
		printf("attr:%s, name:%s\n", mxmlElementGetAttr(name, "report"),
				 mxmlGetText(name, 0));

		age = mxmlWalkNext(name, root, MXML_NO_DESCEND);
		printf("attr:%s, age:%s\n", mxmlElementGetAttr(age, "year"),
				 mxmlGetText(age, 0));

		sex = mxmlWalkNext(age, root, MXML_NO_DESCEND);
		printf("age:%s\n", mxmlGetText(sex, 0));

		object = mxmlFindElement(object, people, "object", NULL, NULL, MXML_NO_DESCEND);
	}


	return 0;
}

效果如下:

后面 我将给大家介绍一下 json格式的文件 以及 C/C++对Json文件的生成和解析

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值