读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。

TinyXM下载地址

使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是:tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp

TinyXML包括如下类:

TiXmlDocument:XML文档类,它一般用于指示一个文档对象;
TiXmlDeclaration:XML标识类,也就是XML文件第一行中标注的相关信息;
TiXmlElement:XML节点类,这个类用来表示一个节点;
TiXmlText:XML节点类的文本信息类,标注了XML节点类的文本信息;
TiXmlComment:XML的注释信息类,用来标识XML文档类的注释信息;

继承关系如下:

以如下Students.xml为例进行数据读取:

<Students><Student Name="James" Age = "10"><Class>1</Class><Grade>2</Grade></Student><Student Name="Jane" Age = "11"><Class>2</Class><Grade>3</Grade></Student>
</Students>

读取代码:

#include <iostream>
#include "tinyxml.h"#define CheckNullReturnMinusOne(t) if (nullptr == t) { return -1; }int main()
{const char* path = "Students.xml";TiXmlDocument doc(path);if (!doc.LoadFile()){std::cout << "Load File Failed" << std::endl;return -1;}TiXmlElement* pRoot = doc.RootElement(); CheckNullReturnMinusOne(pRoot);for (TiXmlElement* pStudent = pRoot->FirstChildElement(); pStudent != nullptr; pStudent = pStudent->NextSiblingElement()){std::cout << "---------------------------------\n";// 遍历获取Student节点的所有属性for (TiXmlAttribute* pAttribute = pStudent->FirstAttribute(); pAttribute != nullptr; pAttribute = pAttribute->Next()){std::cout << pAttribute->Name() << " : " << pAttribute->Value() << std::endl;}// 获取Student节点的子节点for (TiXmlElement* pData = pStudent->FirstChildElement(); pData != nullptr; pData = pData->NextSiblingElement()){std::cout << pData->Value() << " : " << pData->GetText() << std::endl;}std::cout << "----------------------------------\n";}return 0;
}

程序运行输出为:

---------------------------------
Name : James
Age : 10
Class : 1
Grade : 2
----------------------------------
---------------------------------
Name : Jane
Age : 11
Class : 2
Grade : 3
----------------------------------

tinyxml库使用实例相关推荐

  1. angular模块库开发实例

    angular模块库开发实例 随着前端框架的诞生,也会随之出现一些组件库,方便日常业务开发.今天就聊聊angular4组件库开发流程. 下图是button组件的基础文件. nk-button.comp ...

  2. python time库_python中time库的实例使用方法

    python中time库的实例使用方法 time是python中处理时间的标准库 计算机时间的表达 提供获取系统时间并格式化输出功能 提供系统级精确计时功能,用于程序性能分析 用法:import ti ...

  3. 使用SharePoint Designer定制开发专家库系统实例!

    将近大半年都没有更新博客了,趁这段时间不忙,后续会继续分享一些技术和实际应用.对于Sharepoint的定制开发有很多种方式,对于一般的应用系统,可以使用Sharepoint本身自带的功能,如列表作为 ...

  4. centos php yum gd库,Centos7下PHP安装gd库的实例讲解

    Centos7下安装php, 或php的gd库支持,都是很简单的. 一切通过yum搞定. yum install php-gd 以上命令就搞定php-gd的支持,快快看看phpinfo是否支持了? 可 ...

  5. 离线轻量级大数据平台Spark之MLib机器学习库TF-IDF实例

    TF-IDF(termfrequency–inverse document frequency)是TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度.字词的 ...

  6. 盘点8个数据分析相关的Python库(实例+代码)

    导读:Python中常会用到一些专门的库,如NumPy.SciPy.Pandas和Matplotlib.数据处理常用到NumPy.SciPy和Pandas,数据分析常用到Pandas和Scikit-L ...

  7. 《MySQL实战45讲》——学习笔记31 “误删数据的解决方案(删行/删表/删库/删实例)“

    本篇介绍MySQL误删数据的几种情况以及误删后的处理方法,包括: 使用delete语句误删数据行: 使用drop table或者truncate table语句误删数据表: 使用drop databa ...

  8. Python菜鸟学习手册14----标准库+代码实例

    Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我 ...

  9. python中pyinstaller库的使用(第三方库) 实例8:科赫雪花小包裹

    模块一:turtle库 模块二:time库 模块三:random库 模块四:pyinstaller库(第三方库) 我们希望用可执行文件的方式来执行一段代码 而不是直接用源代码 将.py源代码转换成无需 ...

  10. vs2010 静态库以及动态库编译实例

    有网友留言,指出了本文中有错的地方,在此谢谢指摘. 重新编辑了一下本文,新添加了一些东西以及到目前为止对静态库和动态库的心得理解和心得,和大家分享 最近在研究ffmpeg,由于用c#开发,而ffmpe ...

最新文章

  1. 中国团队新型类脑芯片登上《自然》封面
  2. abstract类中不可以有private的成员_我要告诉你:java接口中可以定义private私有方法...
  3. LintCode: Binary Tree Inorder Traversal
  4. truffle详细使用教程
  5. Oracle数据库的impdp导入操作以及dba_directories使用方法
  6. selenium 文件上传
  7. 服务器热修复,热修复探究,hotfix,patch
  8. 详解: Spark 相对于MapReduce的优势(为什么MapReduce性能不理想)
  9. 递归算法设计 —— 选择排序和冒泡排序
  10. Atititt hi dev eff db op Spring JDBC 目录 1. Spring JDBC 2 1 1.1. Atitit 数据库db insert 插入数据data 最佳实践
  11. WPF 添加阴影效果
  12. C#操作base64文件
  13. 用python写一个专属字典生成器
  14. UITextView - 2
  15. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest B. Product(杜教筛+约数)
  16. Vulkan学习(四):Shader加载 管线设置
  17. mysql表误删回复_MySQL数据库误删恢复
  18. 前端导出Excel表格
  19. 【苹果推??iMessage群发设置内容参数】什么是苹果推信?什么是苹果推?什么是日历推
  20. Python 爬抖音

热门文章

  1. 微软Azure、谷歌GAE、亚马逊AWS比較
  2. 使用分区表fstab永久挂载磁盘分区
  3. vim使用方法的总结摘自鸟哥的私房菜
  4. iOS开发篇——C++函数模板介绍
  5. idea git配置好之后无法看到已修改的文件解决方法
  6. 9. Git flow
  7. 62. Event shiftKey 事件属性
  8. 6. head 区的设置
  9. 创建数据库company写出语句_MySQL中最实用的SQL语句
  10. iBATIS的自定义类型处理器TypeHandlerCallback解决乱码