====== XmlReader ====== **//Inherited from//** NULL **//Inherited by//** NULL **//Friend class//** [[class::kernel::xmlwriter|XmlWriter]] **//Description//** XML((可扩展标记语言))是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 \\ 在K2中Xml的读入写出接口都通过xml文档引擎(XmlDocument)来实现,文档引擎解析xml文件之后会形成一系列xml元素(XmlElement)的树形结构,xml元素由标签、文本内容以及属性和子元素组成。XmlReader是对Xml库读入接口的封装,可通过XmlReader对象对xml文件解析和检索数据。 **//Members//** * char [[xmlreader#m_strxmlfile|m_strXmlFile]][MAX_PATH_LENGTH] * XmlDocument * [[xmlreader#m_pxmlparser|m_pXmlParser]] * bool [[xmlreader#m_bcloned|m_bCloned]] **//Public interface//** * [[xmlreader#xmlreader1|XmlReader]](const char * xml) * void [[xmlreader#clone|clone]](XmlWriter * pWriter) * void [[xmlreader#parse|parse]]() * void [[xmlreader#setfile|setFile]](const char * xml) * const char * [[xmlreader#gettext|getText]](XmlElement * pElement) * int [[xmlreader#getintvalue|getIntValue]](XmlElement * pElement) * double [[xmlreader#getdoublevalue|getDoubleValue]](XmlElement * pElement) * const char * [[xmlreader#getstringattribute|getStringAttribute]](XmlElement * pElement,const char * name) * double [[xmlreader#getdoubleattribute|getDoubleAttribute]](XmlElement * pElement,const char * name) * int [[xmlreader#getintattribute|getIntAttribute]](XmlElement * pElement,const char * name) * const char * [[xmlreader#gettag|getTag]](XmlElement * pElement) * int [[xmlreader#getchildcount|getChildCount]](XmlElement * pElement,const char * filter = 0) * XmlElement * [[xmlreader#getchild|getChild]](XmlElement * pParent,const char * filter = 0,int index = 0) * XmlElement * [[xmlreader#getnext|getNext]](XmlElement * pElem) * XmlElement * [[xmlreader#search|search]](const char * tag,const char * atb,int intAtb,XmlElement * pPar = 0) * XmlElement * [[xmlreader#search|search]](const char * tag,const char * atb, const char * strAtb,XmlElement * pPar = 0) ---- {{anchor:m_strxmlfile}} **char m_strXmlFile** xml文件路径名。 {{anchor:m_pxmlparser}} **XmlDocument * m_pXmlParser** 处理指定xml文档的文档引擎,可以对xml的数据进行解析。 {{anchor:m_bcloned}} **bool m_bCloned** 文档引擎是否参考另外的XmlWriter对象 ---- {{anchor:xmlreader1}} **XmlReader(const char * xml)** *function: 构建对象 *parameters: - [i]const char * xml: xml文件名 *return value: 无 {{anchor:clone}} **void clone(XmlWriter * pWriter)** *function: 与XmlWriter对象共享文档引擎,方便同时对某个xml文件进行读写操作。 *parameters: - [i]XmlWriter * pWriter: 被共享文档引擎的XmlWriter对象 *return value: 无 {{anchor:parse}} **void parse()** *function: 由文档引擎解析xml文件。在获取xml数据之前,必须调用该函数。 *parameters: NULL *return value: 无 {{anchor:setfile}} **void setFile(const char * xml)** *function: 设置xml文件名 *parameters: - [i]const char * xml: xml文件名 *return value: 无 {{anchor:gettext}} **const char * getText(XmlElement * pElement)** *function: 获取指定Xml元素的文本内容 *parameters: - [i]XmlElement * pElement: xml元素 *return value: 指定xml元素的文本内容 {{anchor:getintvalue}} **int getIntValue(XmlElement * pElement)** *function: 获取指定xml元素内容的整数值,由文本内容转化得到 *parameters: - [i]XmlElement * pElement: xml元素 *return value: 指定xml元素内容的整数值 {{anchor:getdoublevalue}} **double getDoubleValue(XmlElement * pElement)** *function: 获取指定xml元素内容的浮点数值,由文本内容转化得到 *parameters: - [i]XmlElement * pElement: xml元素 *return value: 指定xml元素内容的浮点数值 {{anchor:getstringattribute}} **const char * getStringAttribute(XmlElement * pElement,const char * name)** *function: 获取指定xml元素属性name的字符串属性值 *parameters: - [i]XmlElement * pElement: xml元素 - [i]const char * name: 属性名 *return value: 与属性name对应的字符串属性值 {{anchor:getdoubleattribute}} **double getDoubleAttribute(XmlElement * pElement,const char * name)** *function: 获取指定xml元素属性name的浮点数属性值 *parameters: - [i]XmlElement * pElement: xml元素 - [i]const char * name: 属性名 *return value: 与属性name对应的浮点数属性值 {{anchor:getintattribute}} **int getIntAttribute(XmlElement * pElement,const char * name)** *function: 获取指定xml元素属性name的整数属性值 *parameters: - [i]XmlElement * pElement: xml元素 - [i]const char * name: 属性名 *return value: 与属性name对应的整数属性值 {{anchor:gettag}} **const char * getTag(XmlElement * pElement)** *function: 获取指定xml元素的标签字符串 *parameters: - [i]XmlElement * pElement: xml元素 *return value: pElement的标签字符串 {{anchor:getchildcount}} **int getChildCount(XmlElement * pElement,const char * filter = 0)** *function: 获取指定xml元素的子元素的个数 *parameters: - [i]XmlElement * pElement: xml元素 - [i]const char * filter = 0: 元素过滤器,只统计标签为filter的子元素,当filter为空的时候统计所有的子元素。但是不会递归调用 *return value: 子元素的个数 {{anchor:getchild}} **XmlElement * getChild(XmlElement * pParent,const char * filter = 0,int index = 0)** *function: 获取指定xml元素标签为filter的第index个子元素,0-base。如果标签为空,则index从所有的子元素计数。 *parameters: - [i]XmlElement * pParent: 指定的xml元素 - [i]const char * filter = 0: 过滤标签 - [i]int index = 0: 指定序号 *return value: pParent的子元素中第index个标签为filter的子元素 {{anchor:getnext}} **XmlElement * getNext(XmlElement * pElem)** *function: 获取指定xml元素的下一个元素,在文档引擎的属性结构中,他们为同一层次。 *parameters: - [i]XmlElement * pElem: xml元素 *return value: pElem的下一个元素 {{anchor:search}} **XmlElement * search(const char * tag,const char * atb,int intAtb,XmlElement * pPar = 0)** *function: 在指定xml元素的子元素中寻找标签为tag,属性atb的属性值为intAtb的子元素 *parameters: - [i]const char * tag: 标签 - [i]const char * atb: 属性名 - [i]int intAtb: 整数属性值 - [i]XmlElement * pPar = 0:xml元素,如果为空,则从当前文档引擎所有的元素中寻找 *return value: 匹配指定参数的xml元素,若没有则返回0 {{anchor:search}} **XmlElement * search(const char * tag,const char * atb, const char * strAtb,XmlElement * pPar = 0)** *function: 在指定xml元素的子元素中寻找标签为tag,属性atb的属性值为strAtb的子元素 *parameters: - [i]const char * tag: 标签 - [i]const char * atb: 属性名 - [i]const char * strAtb: 字符串属性值 - [i]XmlElement * pPar = 0: xml元素,如果为空,则从当前文档引擎所有的元素中寻找 *return value: 匹配指定参数的xml元素,若没有则返回0