码迷,mamicode.com
首页 > 其他好文 > 详细

Xml扩展

时间:2015-03-04 21:13:27      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:格式转换   simple   programs   easily   

前两天在做一个xml格式转换的东东,用到了tinyxml。因为之前没有用过tinyxml,所以先下载它的源码,学习一下,然后再完成工作。现在要做的事情做完了,觉得有必要把自己学习tinyxml过程中的一些收获记录一下,分享一下。


主要用于软件的配置文件,相关的配置文件类型有Ini ,xml,json(java),等保存软件的版本信息或者运行参数;

可在该类的基础上,进行二次封装,封装成适合软件存取的相关数据进去;


1. tinyxml是什么?

TinyXML is a simple, small, C++ XML parser that can be easily

integrated into other programs.

TinyXML is a simple, small, C++ XML parser that can be easily  integrated into other programs. (TinyXML是一个简单的,轻量级的,由C++实现的XML文档的解析器,它可以被其它程序方便地集成进去使用)

2. 如何得到tinyxml的源码?

3. tinyxml是免费开源的吗?

是的,tinyxml是免费开源的,任何组织或个人都可以在自己的项目中使用tinyxml。

4. 如何使用tinyxml?

  • (1)下载tinyxml的源码,把源码加入到自己的项目的源码目录

  • (2)在要用到tinyxml的程序中,包含 tinyxml.h

  • (3)具体如何使用,参见接下来的部分

5.关于tinyxml的剖析:

下面是名为 example.xml的文档,后续的剖析都会以这个xml文档为例:

技术分享

example.xml

(1)tinyxml把xml文档建立成一棵DOM(Document Object Model)树,具体实现用的是firstchild–nextsibling tree,下面是对该树的模型的一个简单介绍:

firstchild-nextsibling是一种多叉树常用的实现方法,每个结点只需要知道它的第一个孩子结点(first child node)和它的下一个兄弟结点(next sibling node),这样一整棵树的结构就会建立起来,也可以用根结点的指针为起点来对整棵树进行遍历。在tinyxml中,每个结点保存了它的first child, last child,  next sibling, previous sibling, parent这五个与它相关的结点的指针,这样便可提供更加方便的遍历接口。下面是对上面的example.xml的内容所建立的DOM树:

技术分享

DOM tree

上图中 蓝色的指向first child, 红色的指向last child, 绿色的指向next sibling, 紫色的指向previoud sibling, 黑色的指向parent

(2)tinyxml 把一篇xml文档里的各个元素抽象成如下图所示的对象:

技术分享

TinyXml Object Model

  • TiXmlBase: 所有tinyxml中的对象的公共基类,实现了一些公共的操作,比如字符编码转换等,另外还定义了一些公共的数据结构,比如错误类型等。

  • TiXmlNode: 是DOM树中结点元素的基类型,它定义了DOM树结点的一些特征数据以及一些相关的操作。

  • TiXmlDocument:对应于XML文档整体的一个对象,一棵DOM的根结点是TiXmlDocument类型,而且基它结点不能为TiXmlDocument类型。(example.xml)

  • TiXmlDeclaration:对应于XML文档开始部分声明部分的对象,它主要包含version,  encode, standalone三个方面的数据信息以及相关的操作。()

  • TiXmlComment: 对应于XML文档中的注释部分的对象,它主要包含注释的内容以及相关的操作。( )

  • TiXmlElement:对应于XML文档中普通的元素的对象,每个元素有一个对应的名字,另外还可以有一些属性。TiXmlElement包含了这些相关信息及其操作。 ( 

         )

  • TiXmlText: 对应于XML文档中元素中的文本信息的对象,它实现了文本信息相关的操作。(Go to the , Toy store!, Do bills)

  • TiXmlAttributeSet: XML文档中某个元素的所有属性的集合,它是TiXmlElement的一部分,它用来管理该元素的所有属性。

  • TiXmlAttribute: XML文档中的元素的属性所对应的对象。它是一个name-value pair对象,name是属性名,value是属性值。

  • TiXmlUnknown: 所有的用上面的对象不能表示的内容所对应的对象。

example.xml文档和上面定义的对象可以得到如下的对应关系:

技术分享

example

(3) tinyxml的使用方法:

关于tinyxml的使用的例子,在网上有很多的,我这里就不再赘言了,这里有一个别个写的例子,可以参考:

http://www.cnblogs.com/freecoder/archive/2006/08/07/tinyxmlstaplea.html

上面这个帖子里讲的是最基本的应用,如果对上面最基本的用法比较熟悉了,可以尝试看一下TiXmlHandle的实现,它提供了一套比较方便的操作tinyxml中的对象的接口,它做了最基本的空指针检查等,使用起来比直接用少写一些进行空指针检查的代码。

本文出自 “Forgive” 博客,请务必保留此出处http://hanyu196910.blog.51cto.com/7350830/1617323

Xml扩展

标签:格式转换   simple   programs   easily   

原文地址:http://hanyu196910.blog.51cto.com/7350830/1617323

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!