使用TinyXml对XML进行遍历
2016-04-05 18:41
148 查看
TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。
下面介绍TinyXML的一些类。在TinyXML中,根据XML的各种元素来定义了一些类:
TiXmlBase:整个TinyXML模型的基类。
TiXmlAttribute:对应于XML中的元素的属性。
TiXmlNode:对应于DOM结构中的节点。
TiXmlComment:对应于XML中的注释
TiXmlDeclaration:对应于XML中的申明部分,<?versiong="1.0" ?>。
TiXmlDocument:对应于XML的整个文档。
TiXmlElement:对应于XML的元素。
TiXmlText:对应于XML的文字部分
TiXmlUnknown:对应于XML的未知部分。
TiXmlHandler:定义了针对XML的一些操作。
本次测试使用的xml文件内容如下:
测试程序:
DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。
下面介绍TinyXML的一些类。在TinyXML中,根据XML的各种元素来定义了一些类:
TiXmlBase:整个TinyXML模型的基类。
TiXmlAttribute:对应于XML中的元素的属性。
TiXmlNode:对应于DOM结构中的节点。
TiXmlComment:对应于XML中的注释
TiXmlDeclaration:对应于XML中的申明部分,<?versiong="1.0" ?>。
TiXmlDocument:对应于XML的整个文档。
TiXmlElement:对应于XML的元素。
TiXmlText:对应于XML的文字部分
TiXmlUnknown:对应于XML的未知部分。
TiXmlHandler:定义了针对XML的一些操作。
本次测试使用的xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <EllipsoidParam> <Datum Name="BeiJing54" SemiMajorAxis="6378245.0" Flattening="298.3"/> <Datum Name="XiAn80" SemiMajorAxis="6378140.0" Flattening="298.257"/> <Datum Name="CGCS2000" SemiMajorAxis="6378137.0" Flattening="298.257222101"/> <Datum Name="WGS-84" SemiMajorAxis="6378137.0" Flattening="298.257223563"/> </EllipsoidParam>
测试程序:
// tinyxml_test.cpp : 定义控制台应用程序的入口点。 // #include <string> #include "tinyxml.h" // int main() { TiXmlDocument doc("test.xml"); bool loadOkay = doc.LoadFile(); if (!loadOkay) { return false; } TiXmlNode *node = 0; TiXmlElement *datumElement = 0; node = doc.FirstChild("EllipsoidParam"); for (node = node->FirstChild(); node != 0; node = node->NextSibling()) { datumElement = node->ToElement(); // printf("name:%15s semi:%15s flatten:%15s\r\n", datumElement->Attribute("Name"), datumElement->Attribute("SemiMajorAxis"), datumElement->Attribute("Flattening")); } system("pause"); return 0; }附:tinyxml的下载地址:https://sourceforge.net/projects/tinyxml/
相关文章推荐
- Open Investor简介
- 2016 腾讯笔试题 最长回文字串(不连续)(dp)
- http和socket之长连接和短连接区别
- KMP算法(c++)实现
- js事件详解——事件流,事件处理,事件对象
- 俄罗斯Mail.Ru云端部署视频的技术架构解析
- [leetcode-331]Verify Preorder Serialization of a Binary Tree
- 项目4-静态成员应用
- struts2框架之struts框架介绍
- Uva10082 WERTYU -S.B.S.
- 读《构建之法》第四章有感
- C++ 流以及文件操作
- tcp socket阻塞与非阻塞
- 三剑客之awk basic
- android 调用全局的Context
- 第六周第三项目——IP地址
- 反素数
- 第四周 项目5(1)
- leetcode---First Bad Version---二分查找
- 谈Runtime机制和使用的整体化梳理