您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

TiXml使用详解

一、TiXml是什么?

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

二、TiXml文档对象模型(DOM)

1、TiXml文档示例:

<?xml version="1.0" encoding="utf-8"?>
<!--This is only a sample-->
<EngineBlock NodeID="1" NodeName="主流程1" ToolID="MainBlock">
	<EngineNode NodeID="2" NodeName="OutEngineNode2" ToolID="OutEngineNode" NodePermission="false">
		<OutputParam>
			<MVParamItem Name="out1">
				<MVParam Type="Int">0</MVParam>
			</MVParamItem>
		</OutputParam>
	</EngineNode>
</EngineBlock>

2、TiXml内组成元素抽象成类:

1)TiXmlDocument:对应于XML的整个文档。
2)TiXmlDeclaration:对应于XML中的申明部分。

<?xml version="1.0" encoding="utf-8"?>

3)TiXmlComment:对应于XML中的注释。

<!--This is only a sample-->

4)TiXmlElement:对应于XML的元素。

EngineBlock 、EngineNode 、OutputParam、MVParamItem 、MVParam各自包含的所有内容。
但各个元素又可以存在子属关系。

5)TiXmlAttribute:对应于XML中的元素的属性。

NodeID="1"、NodeName="主流程1"和Type="Int"等等

6)TiXmlText:对应于XML的文字部分。

<MVParam Type="Int">0</MVParam>中的0

7)TiXmlUnknown:对应于XML的未知部分。
8)TiXmlHandle:包装TiXmlNode查找子TiXmlNode的方法。
9)TiXmlPrinter:提供元素的转字符流的方法
10)TiXmlAttributeSet:TiXmlAttribute的容器,仅内部使用,用户无需关心

三、TiXml内组成元素再次抽象,提升为基类

1、TiXml内组成元素提升的基类:

1)TiXmlBase:整个TinyXML模型的基类。
2)TiXmlNode:对应于DOM结构中的节点。
3)TiXmlVisitor:TiXmlPrinter的抽象

2、TiXml模型类的关系图

在这里插入图片描述

四、各类中对外使用方法简单介绍

简单介绍写、查找、插入、替换、加载、遍历等常见操作。

1、TiXmlBase

2、基类TiXmlNode

1)<<运算符重载为友元函数,将其输出到C++字符串或者流对象

TINYXML_EXPORT friend std::string& operator<< (std::string& out, const TiXmlNode& base );

2)遍历和查找节点
Parent、FirstChild、LastChild、IterateChildren、FirstChildElement、NextSiblingElement各自的重载
3)插入
InsertEndChild、LinkEndChild、InsertBeforeChild、InsertAfterChild方法
4)替换
ReplaceChild
5)移除
RemoveChild
6)当前节点中属性的遍历、查找
PreviousSibling、NextSibling各自的重载
7)转换成TiXmlNode指针实际指向的子类对象指针
ToDocument、ToElement、ToComment、ToUnknown、ToText、ToDeclaration
8)获取TiXmlNode指针实际指向的子类类型
Type
9)克隆(深拷贝)
Clone

3、TiXmlDocument

1)所有基类公有方法
2)加载
构造函数和LoadFile
3)保存
SaveFile
4)遍历
RootElement

4、TiXmlDeclaration

1)所有基类公有方法
2、属性version、encoding、standalone加载、获取

5、TiXmlComment

1)所有基类公有方法
2)注释的加载、获取

6、TiXmlElement

1)所有基类公有方法
2)创建
构造函数
3)查找、遍历元素的属性
Attribute、QueryIntAttribute、QueryDoubleAttribute、QueryStringAttribute、QueryValueAttribute、FirstAttribute、LastAttribute
4)新增、修改元素的属性
SetAttribute、SetDoubleAttribute各自的重载
5)移除元素的属性
RemoveAttribute
6)获取元素的文本
GetText

7、TiXmlText

8、TiXmlUnknown

9、TiXmlAttribute

1)所有基类公有方法
2)加载
构造函数
3)获取Name和Value信息
Name、Value、ValueStr、IntValue、DoubleValue、NameTStr
4)修改Name和Value信息
SetName、SetValue、SetIntValue、SetDoubleValue
5)遍历
Next、Previous
6)Name的ASCII排序比较
operator==、operator<、operator>

10、TiXmlUnknown

11、TiXmlHandle

包装TiXmlNode查找子TiXmlNode的方法
1、查询
FirstChild、FirstChildElement、FirstChildElement、Child、ChildElement各自的重载
2、创建

TiXmlHandle( TiXmlNode* _node );

3、转换
ToNode、ToElement、ToText、ToUnknown、Node、Element、Text、Unknown

12、TiXmlPrinter

一般由TiXmlNode中Accept方法获取该对象
1、提供打印方法(也可直接调用TiXmlNode中的operator<<函数)
CStr、Str、LineBreak

拓展:
TiXmlNode中的operator<<函数的实现:

std::string& operator<< (std::string& out, const TiXmlNode& base )
{
	TiXmlPrinter printer;
	printer.SetStreamPrinting();
	base.Accept( &printer );
	out.append( printer.Str() );

	return out;
}

有错误或不足欢迎评论指出!创作不易,转载请注明出处。如有帮助,记得点赞关注哦(⊙o⊙)
更多内容请关注个人博客:https://blog.csdn.net/qq_43148810


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进