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功能的核心服务,它主 ...
随机推荐
- django基础(web框架,http协议,django安装)
学习Django之前我们先来看什么是OSI七层模型: 应用层 表示层 应用层(五层模型中把这三层合成一个应用层) http协议 会话层 传输层 提供端口对 ...
- python27 mysqldb window install
https://www.codegood.com/archives/129 下载地址 : https://i.cnblogs.com/Files.aspx
- luogu3980 [NOI2008]志愿者招募
神题,还不太清楚 #include <iostream> #include <cstring> #include <cstdio> #include <que ...
- selenium之定位以及切换frame
总有人看不明白,以防万一,先在开头大写加粗说明一下: frameset不用切,frame需层层切! 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug ...
- centos dhcp 服务器搭建 多vlan
centos dhcp 服务器搭建 多vlan centos 6.5 版本 /etc/dhcp/dhcpd.conf 服务器配置文件 /etc/rc.d/init.d/ ...
- 长沙理工大学第十二届ACM大赛-重现赛
年轮广场 时间限制:1秒 空间限制:131072K 题目描述 在云塘校区,有一个很适合晒太阳的地方————年轮广场 年轮广场可以看成n个位置顺时针围成一个环. 这天,天气非常好,Mathon带着他的小 ...
- Axure:从单一评价方式到用户自由选择
导读: 亲,还记得淘宝对货物的评价方式吗?还记得对快递哥的评价方式吗? 1,经典五星评: ...
- BZOJ 1933 [Shoi2007]Bookcase 书柜的尺寸 ——动态规划
状态设计的方法很巧妙,六个值 h1,h2,h3,t1,t2,t3,我们发现t1,t2,t3可以通过前缀和优化掉一维. 然后考虑把h留下还是t留下,如果留下h显然t是会发生改变的,一个int存不下. 如 ...
- 洛谷P1447 - [NOI2010]能量采集
Portal Description 给出\(n,m(n,m\leq10^5),\)计算\[ \sum_{i=1}^n \sum_{j=1}^m (2gcd(i,j)-1)\] Solution 简单 ...
- 魔法森林(bzoj 3669)
Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...