Tinyxml的简单应用
参考文章: 1-> http://www.cnblogs.com/phinecos/archive/2008/03/11/1100912.html
2-> http://blog.csdn.net/clever101/article/details/5334369
在日常开发过程中,常常需要用到xml文件的读写,tinyxml是一款轻量级的xml开源库,对于诸如程序配置,账单记录等常见的xml文件读写,tinyxml完全可以胜任.
1->代码下载:http://sourceforge.net/projects/tinyxml/
2->编译
解压下载包,用VS2010打开 tinyxml.sln 解决方案,里面共有四个工程,编译第一个工程 tinyxml ,生成 tinyxml.lib 静态库文件,我们所需要用到的就是 tinyxml.h 和 tinyxml.lib .
3->测试
新建工程,添加tinyxml.h头文件和tinyxml.lib静态库,我们就可以对xml文件进行都写了,以下是测试代码.
#include <iostream>
#include <string>
#include "tinystr.h"
#include "tinyxml.h"
using namespace std; #define ASSERT_P(v,s,r) do{if(v==s)return r;} while(0); bool CreateFile(const char* szFileName)
{
// 创建文档对象
TiXmlDocument *pDocument = new TiXmlDocument();
ASSERT_P(pDocument,NULL,false);
// 创建根元素,连接到pDocument
TiXmlElement *pConfigElement = new TiXmlElement("config");
ASSERT_P(pConfigElement,NULL,false);
pDocument->LinkEndChild(pConfigElement);
// 创建一个common元素,连接到config下
TiXmlElement *pCommonElement = new TiXmlElement("common");
ASSERT_P(pCommonElement,NULL,false);
// 为common元素设置属性(key,value)
pCommonElement->SetAttribute("zoneid","");
pCommonElement->SetAttribute("platid","");
pConfigElement->LinkEndChild(pCommonElement);
// 添加zone元素
int nZoneCnt = ;
TiXmlElement *pZoneListElement = new TiXmlElement("zonelist");
ASSERT_P(pZoneListElement,NULL,false);
pZoneListElement->SetAttribute("zonecount",);
pConfigElement->LinkEndChild(pZoneListElement);
for(int i=;i<;i++)
{
char szName[];
TiXmlElement *pZoneElement = new TiXmlElement("zone");
sprintf(szName,"zone_%02d",i+);
pZoneElement->SetAttribute("name",szName);
pZoneListElement->LinkEndChild(pZoneElement);
}
return pDocument->SaveFile(szFileName);
} bool ReadFile(const char *szFileName)
{
// 加载文件
TiXmlDocument *pDocument = new TiXmlDocument(szFileName);
ASSERT_P(pDocument,NULL,false);
pDocument->LoadFile();
// 获得,并输出根元素
TiXmlElement *pConfigElement = pDocument->RootElement();
cout<<pConfigElement->Value()<<endl;
// 获取config的第一个子元素
TiXmlElement *pCommonElement = pConfigElement->FirstChildElement();
// or TiXmlElement *pCommonElement = pConfigElement->FirstChildElement("common");
ASSERT_P(pCommonElement,NULL,false);
cout<<"\tzoneid="<<pCommonElement->Attribute("zoneid")<<",platid="<<pCommonElement->Attribute("platid")<<endl;
// 第二个子元素
TiXmlElement *pZoneListElement = pConfigElement->FirstChildElement("zonelist");
ASSERT_P(pZoneListElement,NULL,false);
int nZoneCount = atoi(pZoneListElement->Attribute("zonecount"));
TiXmlElement *pZoneElement = pZoneListElement->FirstChildElement();
for(int i=;i<nZoneCount;i++)
{
ASSERT_P(pZoneElement,NULL,false);
cout<<"\t\tname="<<pZoneElement->Attribute("name")<<endl;
pZoneElement = pZoneElement->NextSiblingElement();
}
return true;
} int main()
{
const char *szFileName = "./config.xml";
CreateFile(szFileName);
ReadFile(szFileName);
system("pause");
return ;
}
Tinyxml的简单应用的更多相关文章
- 开源TinyXML 最简单的新手教程
TinyXML它是基于一个非常受欢迎的现在DOM型号XML解析器,简单易用且小巧玲珑,很适合存储简单数据.配置文件. 该项目属于开源项目,在sourceforge上边的链接是:http://sourc ...
- TinyXML 的简单介绍以及使用
先说几句重点: 1,tinyxml 生成或解析XML非常好用 2,tinyxml 利用DOM(文档对象模型)操作XML,根节点与各个子节点相当于形成一棵树 3,只要你了解tinyxml的用法,可以只n ...
- TinyXML用法小结2
参考:http://www.cnblogs.com/hgwang/p/5833638.html TinyXML用法小结 1. 介绍 Tinyxml的官方网址:http://www.grinn ...
- 值得推荐的C/C++框架和库
值得推荐的C/C++框架和库 [本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看 ...
- [转]C/C++ 程序员必须收藏的资源大全
from: https://github.com/jobbole/awesome-cpp-cn C++ 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列 ...
- [转载]C/C++框架和库
C/C++框架和库 装载自:http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 Webbench Web ...
- C++ 资源大全
http://www.uml.org.cn/c++/201411145.asp http://ezlippi.com/blog/2014/12/c-open-project.html <C++ ...
- 最全面的 C++ 资源、框架大全
转载自 http://www.codeceo.com/article/cpp-resource-framework.html#0-tsina-1-99850-397232819ff9a47a7b7 ...
- 1.值得推荐的C/C++框架和库 (转)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
随机推荐
- 2015ACM/ICPC亚洲区长春站 G hdu 5533 Dancing Stars on Me
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 怎么通过URL访问到服务器上的物理文件
目的 :搞清楚在jsp页面中如何引用static目录结构中的静态资源 一.URL URL的全称是统一资源定位符,俗称网页地址(网址),如同在网络上的门牌,是因特网上标准的资源的地址(Address). ...
- jpeglib使用指南
您可以到http://www.ijg.org/网站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件, ...
- Solve error: 'class vtkImageActor' has no member named 'SetInput'
Replacement of SetInput() with SetInputData() and SetInputConnection() someFilter->SetInput(someR ...
- swift -- 学习记录
先把疯狂的swift这本书大致看了一遍 2016.7.13 因为实在是太闲,所以决定把公司的应用用swift写一遍 然后顺便看看swift的官方文档 这里有一个官文的中文翻译,感动啊 http://w ...
- Oracle用户信息查询
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角 ...
- 对于默认 Windows NT 安装的 SID 值
https://support.microsoft.com/en-us/kb/163846/zh-cn
- 5. Configure the Image Service
Controller Node: 1. sudo apt-get install glance python-glanceclient 2. sudo vi /etc/glance/glance- ...
- 《GK101任意波发生器》升级固件发布(版本:1.0.2build851)
一.固件说明: 硬件版本:0,logic.3 固件版本:1.0.2.build851 编译日期:2015-06-26 ====================================== 二. ...
- 【液晶模块系列基础视频】4.2.X-GUI图形界面库-画矩形函数简介
[液晶模块系列基础视频]4.2.X-GUI图形界面库-画矩形函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地址: ...