标签:
上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup;
CMarkup:xml解析器,目前内置支持三种编码格式:UTF8、UNICODE、ASNI;CMarkupNode:xml节点类
先介绍CMarkup:
XMLELEMENT: xml节点元素类型定义,iStart,节点元素在xml文件中的起始位置;iChild,节点元素子节点;iNext,节点元素的下一个节点(兄弟节点);iParent,节点元素的父节点;iData,
节点元素的数据。
CMarkupNode作为CMarkup的友元类,意味着可以访问CMarkup的各成员函数和数据属性,事实上后期的遍历xml就是结合CMarkupNode的GetSibling和GetChild实现的。
类成员数据:
m_pstrXML:为CMarkup存储的以加载xml文件数据内容的指针缓冲区;
m_pElements:保存XMLELEMENT类型的节点元素信息的缓冲区,事实上可能有部分未预料的存储空间;
m_nElements:实际的保存m_pElements中有效的节点元素数;
m_nReservedElements:预留的m_pElements缓冲区空间大小,具体策略为:m_nElements >= m_nReservedElements ) {m_nReservedElements += (m_nReservedElements / 2)
+ 500;m_pElements = static_cast<XMLELEMENT*>(realloc(m_pElements, m_nReservedElements * sizeof(XMLELEMENT)));
m_szErrorMsg:最近一次解析时的错误信息;
m_szErrorXML:最近一次解析时的xml位置信息;
m_bPreserveWhitespace:是否跳过忽略空格,默认是忽略;
CMarkupNode:
XMLATTRIBUTE:节点属性结构体定义,iName为属性名,iValue为属性值均为ULONG类型;
MAX_XML_ATTRIBUTES:节点支持最多64个属性个数;
类成员数据:
m_aAttributes:节点属性列表(节点属性数组,保存数据类似于键值对的方式);
m_iPos:指定该属性节点在所属拥有者(指CMarkup对象)中的节点元素中的当前位置(事实上其节点元素也为指针数组保存);
m_nAttributes:节点中属性数;
m_pOwner:该节点所属拥有者(指CMarkup对象);
标签:
原文地址:http://www.cnblogs.com/haomiao/p/4925273.html