TinyXML中类分析
TiXmlElement:
对应于XML的元素,定义了对element的相关操作
成员函数:
TiXmlElement (const char * in_value);
TiXmlElement( const std::string& _value );
TiXmlElement( const TiXmlElement& );
// 定义一个TiXmlElement TiXmlElement& operator=( const TiXmlElement& base );
// TiXmlElement的 =(赋值) 运算符重载 virtual ~TiXmlElement();
// 析构函数 const char* Attribute( const char* name ) const;
const char* Attribute( const char* name, int* i ) const;
const char* Attribute( const char* name, double* d ) const;
// 通过属性名返回属性值,若果该值可以被转化为int/double,则通过第二个参数将转化后的值返回 int QueryIntAttribute( const char* name, int* _value ) const;
int QueryUnsignedAttribute( const char* name, unsigned* _value ) const;
int QueryBoolAttribute( const char* name, bool* _value ) const;
int QueryDoubleAttribute( const char* name, double* _value ) const;
int QueryFloatAttribute( const char* name, float* _value ) const;
int QueryStringAttribute( const char* name, std::string* _value ) const;
// 是Attribute()的替代,但有着更丰富的错误检查 template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const;
int QueryValueAttribute( const std::string& name, std::string* outValue ) const;
// 尝试将属性读入不同类型 void SetAttribute( const char* name, const char * _value );
void SetAttribute( const char * name, int value );
void SetDoubleAttribute( const char * name, double value );
// 通过给出属性名和属性值,为元素设置一个属性 void RemoveAttribute( const char * name );
// 通过给出属性名来删除元素对应的属性 const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); }
TiXmlAttribute* FirstAttribute() { return attributeSet.First(); }
const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); }
TiXmlAttribute* LastAttribute() { return attributeSet.Last(); }
// 回去元素的第一个/最后一个属性 const char* GetText() const;
// 访问元素内文本 virtual TiXmlNode* Clone() const;
// 创建一个此元素副本,并返回此副本 virtual void Print( FILE* cfile, int depth ) const;
// 将此元素print到一个文件流
TiXmlComment:
对应于XML中的注释
成员函数:
TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {}
TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT );
TiXmlComment( const TiXmlComment& );
// 创建一个TiXmlComment
TiXmlComment& operator=( const TiXmlComment& base );
// 对于TiXmlComment的 =(赋值)运算符重载
virtual ~TiXmlComment() {}
// 析构函数
virtual TiXmlNode* Clone() const;
// 创建一个此TiXmlComment的副本,并返回它
virtual void Print( FILE* cfile, int depth ) const;
virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
virtual const TiXmlComment* ToComment() const { return this; }
virtual TiXmlComment* ToComment() { return this; }
virtual bool Accept( TiXmlVisitor* visitor ) const;
TiXmlText:
对应于XML的文本部分,用于构建Element的文本部分,分为normal和CDATA两个模式
成员函数:
TiXmlText (const char * initValue );
TiXmlText( const TiXmlText& copy );
TiXmlText( const std::string& initValue );
virtual ~TiXmlText() {}
// 构造函数和析构函数 TiXmlText& operator=( const TiXmlText& base );
// 对于TiXmlText的 =(赋值)运算符重载 bool CDATA() const;
// 返回TiXmlText是否为CDATA模式读 void SetCDATA( bool _cdata );
// 设置TiXmlText为是否为(true/false)CDATA模式 virtual void Print( FILE* cfile, int depth ) const;
virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
virtual const TiXmlText* ToText() const { return this; }
virtual TiXmlText* ToText() { return this; }
virtual bool Accept( TiXmlVisitor* content ) const;
TiXmlDeclaration:
对应于XML中的申明部分,<?xml version="?" encoding="?", standalone="?">
成员函数:
TiXmlDeclaration();
TiXmlDeclaration( const std::string& _version,
const std::string& _encoding,
const std::string& _standalone );
TiXmlDeclaration( const char* _version,
const char* _encoding,
const char* _standalone );
TiXmlDeclaration( const TiXmlDeclaration& copy );
// 构建一个TiXmlDeclaration TiXmlDeclaration& operator=( const TiXmlDeclaration& copy );
// 对应于TiXmlDeclaration的 =(赋值)运算符重载 virtual ~TiXmlDeclaration() {}
// 析构函数 const char *Version() const { return version.c_str (); }
const char *Encoding() const { return encoding.c_str (); }
const char *Standalone() const { return standalone.c_str (); }
// 获取 declaration 的 version、encoding、standalone的对应值 virtual TiXmlNode* Clone() const;
// 创建一个TiXmlDeclaration的副本,并将其返回 virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
virtual void Print( FILE* cfile, int depth ) const;
virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
virtual const TiXmlDeclaration* ToDeclaration() const { return this; }
virtual TiXmlDeclaration* ToDeclaration() { return this; }
virtual bool Accept( TiXmlVisitor* visitor ) const;
TiXmlDocument:
对应于XML的整个文档,TiXmlDocument作为顶层节点,用于连接XML的其他各个部
分,TiXmlDocument可以被load、save、print
成员函数:
TiXmlDocument();
TiXmlDocument( const char * documentName );
TiXmlDocument( const std::string& documentName );
TiXmlDocument( const TiXmlDocument& copy );
// 创建一个TiXmlDocument TiXmlDocument& operator=( const TiXmlDocument& copy );
// 对应于TiXmlDocument的 =(赋值)运算符重载 virtual ~TiXmlDocument() {}
// 析构函数 bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
// 使用当前文档(或给定文件名\文件指针)值加载文件,操作成功返回true bool SaveFile() const;
bool SaveFile( const char * filename ) const;
bool SaveFile( FILE* ) const;
// 使用当前文档值保存文件(xml),操作成功返回true const TiXmlElement* RootElement() const { return FirstChildElement(); }
TiXmlElement* RootElement() { return FirstChildElement(); }
// 获取文档的根元素 bool Error() const { return error; }
const char * ErrorDesc() const { return errorDesc.c_str (); }
int ErrorId() const { return errorId; }
void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding );
int ErrorRow() const { return errorLocation.row+; }
int ErrorCol() const { return errorLocation.col+; }
// 错误处理、定位 void SetTabSize( int _tabsize ) { tabsize = _tabsize; }
int TabSize() const { return tabsize; }
// 用于错误处理的函数的函数 void ClearError();
// 当错误被处理后,调用此函数重置错误相关参数 virtual const char* Parse( const char* p, TiXmlParsingData* data = , TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
void Print() const { Print( stdout, ); }
virtual void Print( FILE* cfile, int depth = ) const;
virtual const TiXmlDocument* ToDocument() const { return this; }
virtual TiXmlDocument* ToDocument() { return this; }
virtual bool Accept( TiXmlVisitor* content ) const;
TiXmlHandle:
定义了一些关于XML的操作,TiXmlHandle不是 TinyXml DOM 结构的一部分,而是一个单独
的实用程序类。
成员函数:
TiXmlHandle( TiXmlNode* _node ) { this->node = _node; }
TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; }
// 创建一个TiXmlHandle
TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; }
// 对应于TiXmlHandle的 =(赋值)运算符重载
TiXmlHandle FirstChild() const;
TiXmlHandle FirstChild( const char * value ) const;
// 返回第一个子节点(或给定名称的子节点)的句柄
TiXmlHandle FirstChildElement() const;
TiXmlHandle FirstChildElement( const char * value ) const;
// 返回第一个子元素(或给定名称的子元素)的句柄
TiXmlHandle Child( const char* value, int index ) const;
TiXmlHandle Child( int index ) const;
// 返回给定索引对应的子节点(/给定名称)的句柄
TiXmlHandle ChildElement( const char* value, int index ) const;
TiXmlHandle ChildElement( int index ) const;
// 返回给定索引对应的子元素(/给定名称)的句柄
TiXmlNode* ToNode() const { return node; }
TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : ); }
TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : ); }
TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : ); }
TiXmlNode* Node() const { return ToNode(); }
TiXmlElement* Element() const { return ToElement(); }
TiXmlText* Text() const { return ToText(); }
TiXmlUnknown* Unknown() const { return ToUnknown(); }
TinyXML中类分析的更多相关文章
- C++中类的内存空间大小(sizeof)分析
注意类大小与结构体大小还是有一些不同的,类里面还包含成员函数(特别是虚函数),结构体中一般只有数据成员. 首先明确各数据类型占多大的空间.例如int到底是占2字节还是4字节空间: 在TC里,int是2 ...
- UI基础:UI中类的继承关系图,最基本的视图分析
首先,UI中常用的UIwindow.UILabel.UIButton.UITextField属于UIView的子类.UITextField和UILabel和UIwindow自身没有初始化方法,需要使用 ...
- Seata 中类SPI使用机制分析
Seata中采用了与sofa-rpc和dubbo中相同的服务扩展机制.都是基于JAVA自身的服务发现机制-SPI进行再次封装注解,sofa-rpc和dubbo(@Deprecated)中的注解名字叫做 ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
- Android指纹识别深入浅出分析到实战(6.0以下系统适配方案)
指纹识别这个名词听起来并不陌生,但是实际开发过程中用得并不多.Google从Android6.0(api23)开始才提供标准指纹识别支持,并对外提供指纹识别相关的接口.本文除了能适配6.0及以上系统, ...
- Hammer.js分析(三)——input.js
input.js是所有input文件夹中类的父类,浏览器事件绑定.初始化特定的input类.各种参数计算函数. Input父类和其子类就是在做绑定事件,各种参数计算.整合.设置等返回自定义事件对象,交 ...
- 深入.NET平台C#编程 测试题分析
选择题讲解 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可 ...
- Android应用内存泄漏的定位、分析与解决策略
什么是内存泄漏 对于不同的语言平台来说,进行标记回收内存的算法是不一样的,像 Android(Java)则采用 GC-Root 的标记回收算法.下面这张图就展示了 Android 内存的回收管理策略( ...
- Android WIFI 分析(一)
本文基于<深入理解Android WiFi NFC和GPS 卷>和 Android N 代码结合分析 WifiService 是 Frameworks中负责wifi功能的核心服务,它主 ...
随机推荐
- Configure Always On Availability Group for SQL Server on Ubuntu
下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...
- Appium启动app
首先要获取包名,然后获取launcherActivity.获取这两个关键东西的方法很多,这里就不一一多说,小伙伴们可以各显神通.小编这里主要给大家推荐一个sdk自带的实用工具aapt. aapt即An ...
- tinyMCE获取鼠标选中的值
今天遇到一个需求就是要在WordPress的文章编辑页面增加选中文字时要将选中值传递到弹出窗口中 解决方法: 去网上找到了下面这段代码,可以获取到选中文本 { type: 'textbox', nam ...
- Leetcode 329.矩阵中的最长递增路径
矩阵中的最长递增路径 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: n ...
- 【Luogu】P3381最小费用最大流模板(SPFA找增广路)
题目链接 哈 学会最小费用最大流啦 思路是这样. 首先我们有一个贪心策略.如果我们每次找到单位费用和最短的一条增广路,那么显然我们可以把这条路添加到已有的流量里去——不管这条路的流量是多大,反正它能 ...
- BZOJ 4753 [Jsoi2016]最佳团体 ——01分数规划 树形DP
要求比值最大,当然用分数规划. 二分答案,转化为选取一个最大的联通块使得它们的和大于0 然后我们直接DP. 复杂度$O(n^2\log {n})$ #include <map> #incl ...
- Spring Open Session In View
提出:session在应用层就关闭,所以持久化要在应用层,但是到了view层持久化则session已经关闭 解决:session延迟到view层再关闭 原理:session(整个requestScop ...
- angular中的this指向问题
this是指向当前$scope的. 例如在ng-click的使用中,this是指向当前的$scope而并不是dom元素的. 我们可以使用this的一些方法和属性 我们打印一下this就会发现,this ...
- 垃圾收集器与内存分配策略 (深入理解JVM二)
1.概述 垃圾收集(Garbage Collection,GC). 当需要排查各种内存溢出.内存泄露问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调 ...
- R语言入门--画图(一)--ggplot2
先写一些需要用到的知识点,比如包.函数 dplyr 很好用的包 经常与ggplot2连用 mutate:用于对数据框的列进行重新处理,或者用处理的结果添加新列 数据清洗: 1.na.omit() ...