一、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