tinyxml源码解析
来源:互联网 发布:罗麦品质365商城淘宝网 编辑:程序博客网 时间:2024/05/17 22:48
关于XML基础知识在这里:XML 新手入门基础知识
关于tinyxml的简单使用请参考:tinyxml之hello world
tinyxml源码中主要由TiXmlBase、TiXmlAttribute、TiXmlNode、TiXmlComment、TiXmlDeclaration、TiXmlDocument、TiXmlElement、TiXmlText、TiXmlUnknown这几个类构成,它们之间的关系如下图所示:
TiXmlBase是所有类的基类,TiXmlNode、TiXmlAttribute两个类都继承来自TiXmlBase类,其中TiXmlNode类指的是所有被<...>...<.../>包括的内容,而xml中的节点又具体分为以下几方面内容,分别是声明、注释、节点以及节点间的文本,因此在TiXmlNode的基础上又衍生出这几个类TiXmlComment、TiXmlDeclaration、TiXmlDocument、TiXmlElement、TiXmlText、TiXmlUnknown,分别用来指明具体是xml中的哪一部分。TiXmlAttribute类不同于TiXmlNode,它指的是在尖括号里面的内容,像<... ***=...>,其中***就是一个属性。
- //一个Document中可以包括:
- Element(container/leaf)
- Comment(leaf)
- Unknow(leaf)
- Declatation(leaf)
- //一个Element可以包括:
- Element(container/leaf)
- Text(leaf)
- Attributes(not on tree)
- Comment(leaf)
- Unknow(leaf)
源码中把整个xml文件的内容构造成了一个树形的结构,TiXmlNode类中有一下数据成员
- TiXmlNode* parent;
- TiXmlNode* prev;
- TiXmlNode* next;
- NodeType type;
- TIXML_STRING value;
- TiXmlNode* firstChild;
- TiXmlNode* lastChild;
NodeType为枚举类型,表示该TiXmlNode的类型,有document、element、comment、unknow、text、declaration
TIXML_STRING为tinyxml定义的一个类型,当使用STL时,就是string类型。
这些成员变量是指针,这样就组成了整个XML文件的解析树,XML文件的每部分都是树中的一些节点或者内容。如下图所示:
下面来看一个XML文件,具体看一下其中的节点关系:
- <?xml version="1.0" ?>
- <phonebook>
- <item>
- <name>hangzhou hdu</name>
- <addr>hang zhou</addr>
- <tel>110</tel>
- <email>hdu1@hdu.com</email>
- </item>
- <item>
- <name>hdu2</name>
- <addr>hang zhou</addr>
- <tel>111</tel>
- <email>hdu2@hdu.com</email>
- </item>
- <item>
- <name>hdu3</name>
- <addr>hang zhou</addr>
- <tel>112</tel>
- <email>hdu3@hdu.com</email>
- </item>
- </phonebook>
这个XML文件就是一个TiXmlDocument,它的第一个child就是TiXmlDeclaration,第二个child就是TiXmlElement,TiXmlElement本身又有3个child,分别是3TiXmlElement,就是3个item节点,每个item节点有4个child,也就是4个TiXmlElement,这4个TiXmlElement的Value分别是”name”、”addr”、”tel”、”email”。其中Value为”name”的TiXmlElement只有一个child,就是TiXmlText,TiXmlText的Value就是”hangzhou hdu”。至此,整个xml树就建立完成了。
参考:
1、tinyxml源码学习-hello world
- tinyxml源码解析(中)
- tinyxml源码解析(上)
- tinyxml源码解析(上)
- tinyxml源码解析(中)
- tinyxml源码解析
- Tinyxml解析过程源码分析
- tinyxml源码解析(上)tinyxml源码解析(上)http://www.cnblogs.com/marchtea/archive/2012/11/09/2762669.html
- TinyXML 源码剖析(之一)
- Tinyxml-2源码学习
- tinyxml源码的使用
- TinyXML 解析中文XML
- TinyXML解析xml文档
- 使用TinyXML解析XML
- Tinyxml之递归解析
- tinyxml解析配置文件
- TinyXML解析XML
- TinyXML解析模块使用方法
- TinyXML解析word图片
- 使用在Hyper-v中使用ubuntu遇到的一些问题1
- 铁路物流匠心多运
- 在win10 中excel vba 无法直接使用ddl声明的函数,如无法使用mouse_event事件
- Unity吃豆人项目解析
- iOS常见的几种加密方法
- tinyxml源码解析
- PHP验证码实现
- The Unique MST 2017 暑期 学习 次小生成树
- spring学习之@ModelAttribute运用详解
- Javascript实现找不同色块的游戏
- 389. Find the Difference注意异或运算的巧妙使用^
- datatables
- Linux基础教程1
- UVA