【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

c++之TinyXml使用与应用,包含简单的例子

原创 2016年08月31日 15:07:15

使用方法:

使用c++写代码时,发现需要读取一个比较复杂的xml文件,但是感觉Filestorage似乎处理不了,所以采用引入Xml解析库的方式试图解决。其中有很多种。觉得TinyXml比较简单,方便使用(毕竟只是需要读取一下简单类型的xml文件)。于是在网上查了一下使用方法,真的很方便,只要将六个文件添加到工程中就可以了,分别是tinystr.h、tinystr.cpp、tinyxml.h、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp。可以在网址中下载到点击打开链接

使用VS进行编写工程的时候,需要在六个文件中添加#include”stdafx.h“ 当使用TinyXml需要引入头文件#include”tinyxml.h“。

使用举例

使用在工程读取的xml文件作为例子吧;xml结构如下所示


解析的代码如下所示:

ImgGraph GraphFusion::loadData(string path){
	ImgGraph graphs;
	TiXmlDocument doc;
	if (!doc.LoadFile(".\\graphs\\0hsv.xml")){
		cout << "Errors come with loading File";
	}
	TiXmlElement* root = doc.FirstChildElement(); 
	if (root == NULL){
		cout << "No root element" << endl;
	}
	TiXmlElement* graph = root->FirstChildElement();//属性为opencv_storage
	TiXmlElement* E_node = graph->FirstChildElement();//属性为graph
	while (E_node){
		string key_str = E_node->GetText();//得到index中的内容,不过是char*类型或者string类型
		//借助stringstream 进行类型转换
		stringstream ss;
		int key;
		ss <<key_str;
		ss >> key;
		E_node = E_node->NextSiblingElement();//下一个兄弟元素,属性为V_Node
		TiXmlElement* E_ImgNode = E_node->FirstChildElement();//得到子元素,ImgNode
		while (E_ImgNode){
			TiXmlElement* E_content = E_ImgNode->FirstChildElement();//得到子元素,Rindex
			stringstream ssnode;
			int index;
			float weight;
			string index_str = E_content->GetText();//得到Rindex中的内容
			//类型转换
			ssnode << index_str;
			ssnode >> index;
			E_content = E_content->NextSiblingElement();//下一个兄弟节点,weight
			string weight_str =E_content->GetText();//得到weight中的内容
			//类型转换
			stringstream ssWeight;
			ssWeight << weight_str;
			ssWeight >> weight;
			//插入到graphs中
			graphs.insertNode(key, ImgNode(index, weight));
			E_ImgNode = E_ImgNode->NextSiblingElement();//继续ImgNode下一个兄弟节点
		}
		E_node = E_node->NextSiblingElement();//继续V_Node 的下一个兄弟节点
	}
	
	return graphs;
}
          刚开始的时候没有怎么看TinyXml文档,一通乱写,后面看了文档,才没有怎么出错。还是要养成看文档的习惯,不然感觉都不会使现成的工具;

写一下,万一哪一天自己又用到了呢


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

C++ XML解析之TinyXML篇

最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。以后的文章里会讲解使...

我的服务端之添加xml解释器

在游戏服务端中,我们会将可变的东西写数据库里,而将一成不变的东西写在配置里。在现实开发过程中,大多数开发者会选用xml作为服务的配置。原因是xml树形结构化表示、标记清晰及易于理解和方便移植。下面我将会为我的服务端添加tinyxml。tinyxml是一个简单的,轻量级的,由C++实现的XML文档的解析器,它可以被其它程序方便地集成进去使用。同时tinyxml也是免费开源的。因此我会将tinyxml集成到我的服务端里面。tinyxml只有以下几个源文件。 <img src="http://img.blog.csdn.net/20131220194402062?wat

[xml/c/c++] TinyXML中文文档

[xml/c/c++]TinyXML中文文档TinyXML译注:本文是TinyXML 2.5.2版本Document的中文文档,经原作者Lee Thomason同意由hansen翻译,如有误译或者错漏...

C++ XML解析之TinyXML篇

C++ XML解析之TinyXML篇 出处:多特软件站  时间:2011-04-25  人气:<em style="font-style: norm

TinyXML是的一些简单说明与用法

TinyXML是一个简单小巧,可以很容易集成到其它程序中的C++ XML解析器。 它能做些什么简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。 XML...

转载了别人的cocos2d-x的学习笔记

接受触屏事件的优先级是值越小,响应触屏事件的优先级越高 <p cla

TinyXML指南

TinyXML指南原文:http://www.grinninglizard.com/tinyxmldocs/tutorial0.html翻译:http://www.hansencode.cn/2007...

CSDN回帖得分大全(近两年)

√ <a href="http://topic.csdn.net/u/20100521/20/3bdb7123-7de4-4b19-ae5c-3

C++ XML解析之TinyXML篇

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://panpan.blog.51cto.com/489034/104961 最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。以后的文章里会讲解使用Xerces进行C++ XML解析的例子,希望大家一起交流。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析

TinyXML中文文档

译注:本文是TinyXML 2.5.2版本Document的中文文档,经原作者Lee Thomason同意由hansen翻译,如有误译或者错漏,欢迎指正。版权:版权归原作者所有,翻译文档版权归本人ha...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)