QXml.h
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:4k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef _QXML_H_
  2. #define _QXML_H_
  3. #include "QString.h"
  4. #include "QField.h"
  5. #ifdef __cplusplus
  6. extern "C"{
  7. #endif 
  8. typedef enum
  9. {
  10. DECLARE, /*宣告*/
  11. DISPOSE, /*处理 :) */
  12. NODE, /*节点*/
  13. COMMENT, /*注释*/
  14. HOLD, /*原样*/
  15. UNKNOW /*未知*/
  16. }NODETYPE;
  17. typedef struct tagQXmlEntity
  18. {
  19.    char *str;
  20.    char chr;
  21. }QXmlEntity;
  22. extern char *xmlHeader;
  23. extern char *commentHeader;
  24. extern char *commentEnd;
  25. extern char *cdataHeader;
  26. extern char *cdataEnd;
  27. extern QXmlEntity entity[];
  28. enum ERROR_CODE
  29. {
  30.    XML_OK = 1, /*正常*/
  31.    XML_OUT_MEMORY, /*内存不足*/
  32.    XML_DATA_EMPTY, /*数据为空*/
  33.    XML_IO_OPEN_FILE_ERROR, /*文件打开出错*/
  34.    XML_ATTRIB_ERROR, /*错误的属性格式*/
  35.    XML_NO_QUOTA, /*缺少引号*/
  36.    XML_DECLARE_ERROR, /*宣告声明错误*/
  37.    XML_COMMENT_ERROR, /*注释字段错误*/
  38.    XML_NODE_START_ERROR, /*字段的起始格式错误*/
  39.    XML_NODE_END_ERROR, /*字段的结束格式错误*/
  40.    XML_READ_NODE_VALUE, /*读取节点的值出错*/
  41.    XML_NO_CDATA_END, /*没有]]>的结束字段*/
  42.    XML_CONV_TEXT, /*转义符错误*/
  43.    XML_UNKNOW_FORMAT, /*未知格式*/
  44.    XML_TEST_MSG
  45. };
  46. typedef struct tagQXml QXml;
  47. typedef struct tagQXmlNode QXmlNode;
  48. struct tagQXml
  49. {
  50.    QXmlNode *(*ToRoot) (QXml *self);
  51.    int (*ParseFile) (QXml *self,char *fileName);
  52.    int (*ParseBuff) (QXml *self,char *buff);
  53.    int (*SaveToFile) (QXml *self,char *fileName);
  54.    char *(*GetErrText) (QXml *self);
  55.    int (*GetDeclareData) (QXml *self,QString *data);
  56.    void (*ReSet) (QXml *self);
  57.    void (*Release) (QXml *self);
  58.    QFieldList m_listDeclare; /* 宣告的链表,存储QString :) */
  59.    QXmlNode *m_nodeRoot;
  60.    int m_nErrorCode;
  61.    unsigned long m_nRow;
  62.    unsigned long m_nCol;
  63. };
  64. QXml NewQXml();
  65. QXml *MallocQXml();
  66. QXmlNode *QXmlNodeToRoot (QXml *self);
  67. int QXmlParseFile (QXml *self,char *fileName);
  68. int QXmlParseBuff (QXml *self,char *buff);
  69. int QXmlSaveToFile (QXml *self,char *fileName);
  70. char *QXmlGetErrText (QXml *self);
  71. int QXmlGetDeclareData (QXml *self,QString *data);
  72. void QXmlReSet (QXml *self);
  73. void QXmlRelease (QXml *self);
  74. struct tagQXmlNode
  75. {
  76.    QXmlNode *(*ToParent) (QXmlNode *self);
  77.    QXmlNode *(*ToChild) (QXmlNode *self,char *name);
  78.    QXmlNode *(*ToNextNode) (QXmlNode *self,char *name);
  79.    QXmlNode *(*ToPrevNode) (QXmlNode *self,char *name);
  80.    QXmlNode *(*ToFirstChild) (QXmlNode *self);
  81.    QXmlNode *(*ToLastChild) (QXmlNode *self);
  82.    BOOL (*AddChild) (QXmlNode *self,char *name ,char *value);
  83.    BOOL (*AddNodeToChild) (QXmlNode *self,QXmlNode *node);
  84.    BOOL (*SetNodeName) (QXmlNode *self , char *name);
  85.    BOOL (*SetNodeValue) (QXmlNode *self , char *value);
  86.    char *(*GetNodeName) (QXmlNode *self);
  87.    char *(*GetNodeValue) (QXmlNode *self);
  88.    int (*GetNodeType) (QXmlNode *self);
  89.    int (*GetNodeData) (QXmlNode *self,QString *data ,int depth);
  90.    BOOL (*SetAttrib) (QXmlNode *self , char *name , char * value);
  91.    char *(*GetAttrib) (QXmlNode *self , char *name);
  92.    BOOL (*RemoveAttrib) (QXmlNode *self , char *name);
  93.    void (*Destory) (QXmlNode *self);
  94.    void (*Release) (QXmlNode *self);
  95.    QString m_szName;
  96.    QString m_szValue;
  97.    int m_nType;
  98.    QFieldList m_listAttrib;
  99.    QXmlNode *m_nodeChild;
  100.    QXmlNode *m_nodeNext;
  101.    QXmlNode *m_nodePrev;
  102.    QXmlNode *m_nodeParent;
  103. };
  104. QXmlNode *MallocQXmlNode();
  105. QXmlNode *QXmlNodeToParent (QXmlNode *self);
  106. QXmlNode *QXmlNodeToChild (QXmlNode *self,char *name);
  107. QXmlNode *QXmlNodeToNextNode (QXmlNode *self,char *name);
  108. QXmlNode *QXmlNodeToPrevNode (QXmlNode *self,char *name);
  109. QXmlNode *QXmlNodeToFirstChild (QXmlNode *self);
  110. QXmlNode *QXmlNodeToLastChild (QXmlNode *self);
  111. BOOL QXmlNodeAddChild (QXmlNode *self,char *name ,char *value);
  112. BOOL QXmlNodeAddNodeToChild (QXmlNode *self,QXmlNode *node);
  113. BOOL QXmlNodeSetNodeName (QXmlNode *self , char *name);
  114. BOOL QXmlNodeSetNodeValue (QXmlNode *self , char *value);
  115. char *QXmlNodeGetNodeName (QXmlNode *self);
  116. char *QXmlNodeGetNodeValue (QXmlNode *self);
  117. int QXmlNodeGetNodeType (QXmlNode *self);
  118. int QXmlNodeGetNodeData (QXmlNode *self,QString *data ,int depth);
  119. BOOL QXmlNodeSetAttrib (QXmlNode *self , char *name , char * value);
  120. char *QXmlNodeGetAttrib (QXmlNode *self , char *name);
  121. BOOL QXmlNodeRemoveAttrib (QXmlNode *self , char *name);
  122. void QXmlNodeDestory (QXmlNode *self);
  123. void QXmlNodeRelease (QXmlNode *self);
  124. int QXmlDeGetEntity (QString *str);
  125. #ifdef __cplusplus
  126. }
  127. #endif
  128. #endif