📄 cxml.h
字号:
#ifndef __CXML_HEADER__
#define __CXML_HEADER__
#include "CType.h"
#include "CTree.h"
#define NOLANG 0x00
#define GB2312 0x01
#define UTF8 0x02
#define UTF16 0x04
#ifndef STDCALL
#ifndef _WIN32
#define STDCALL
#else
#define STDCALL __stdcall
#endif
#endif
/*---------------------------------------------------------------------*/
/*定义XML规范的数据*/
#define XML_NAME_LEN 32 /*节点名及属性名的长度*/
#define XML_PROP_LEN 64 /*定义属性值的长度*/
#define XML_PATH_LEN 256 /*路径的长度*/
#define XML_MAX_PATH 1024 /*路径的最大长度*/
#define XML_DATA_LEN 2048 /*节点值的长度*/
/*定义的XML操作模式 插入模式*/
#define XML_AUTOGROW 0x01 /*节点自动增长模式*/
#define XML_UNIQNAME 0x02 /*唯一节点模式*/
#define XML_LEADGROW 0x05 /*尾节点的父节点增长模式*/
#define XML_BASEGROW 0x09 /*首节点增长模式*/
/*XML的定位模式,在插入时也可以使用*/
#define XML_LOCFIRST 0x10 /*定位第一次出现*/
#define XML_LOCLAST 0x20 /*定位最后一次出现*/
/*---------------------------------------------------------------------*/
/*数据结构的定义*/
/*定义XML节点的属性结构*/
typedef struct _PROPERTYSTRUCT_tag {
char szName[XML_NAME_LEN + 1];
char szData[XML_PROP_LEN + 1];
} PROPER, *PPROPER;
typedef const PROPER CPROPER, *PCPROPER;
/*定义XML节点属性信息的结构,此结构包含属性信息的全部内容*/
typedef struct _XMLNODEPROPERTY_tag {
BYTE nCount;
PPROPER pVal;
} NODEPROPERTY, *PNODEPROPERTY;
typedef const NODEPROPERTY CNODEPROPERTY, *PCNODEPROPERTY;
/*定义XML结构*/
typedef struct _XMLSTRUCT_tag {
UINT nMaxLen;
UINT nLen;
TREESTRUCT nTree;
} XMLSTRUCT, *PXMLSTRUCT;
typedef const XMLSTRUCT CXMLSTRUCT, *PCXMLSTRUCT;
/*定义XML节点结构*/
typedef struct _XMLNODESTRUCT_tag {
char szName[XML_NAME_LEN + 1];
NODEPROPERTY nProperty;
LPSTR pszData;
} XMLNODE, *PXMLNODE;
typedef const XMLNODE CXMLNODE, *PCXMLNODE;
/*---------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/*导出XML的函数,以“XML_开头”,此类函数中,路径不应该包括根节点名*/
RESULT STDCALL XML_AllocProperty( IN OUT PNODEPROPERTY pProp, IN UINT nPropertyCount );
RESULT STDCALL XML_FreeProperty( IN OUT PNODEPROPERTY pProp );
RESULT STDCALL XML_Create( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszName, IN LPCSTR pszData, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_Delete( IN OUT PXMLSTRUCT pXml );
RESULT STDCALL XML_DelNodeByPos( IN OUT PXMLSTRUCT pXml, IN POS nPos );
RESULT STDCALL XML_DeleteNode( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszPath );
/*根节点的操作函数*/
RESULT STDCALL XML_SetRootName( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszName );
RESULT STDCALL XML_GetRootName( IN PCXMLSTRUCT pXml, IN OUT LPSTR pszName, IN OUT UINT *pnNameLen );
RESULT STDCALL XML_SetRootProperty( IN OUT PXMLSTRUCT pXml, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_GetRootProperty( IN PCXMLSTRUCT pXml, OUT PNODEPROPERTY pProp );
RESULT STDCALL XML_InsertRoot( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszName, IN LPCSTR pszData, IN PCNODEPROPERTY pProp );
/*XML操作函数*/
RESULT STDCALL XML_LocateNode( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos, IN LPCSTR pszPath );
RESULT STDCALL XML_Locate( IN PXMLSTRUCT pXml, IN OUT PPOS pPos, IN LPCSTR pszPath, IN UINT nMode );
RESULT STDCALL XML_LocateNext( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos );
RESULT STDCALL XML_LocatePrior( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos );
RESULT STDCALL XML_LocateNextTwin( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos );
RESULT STDCALL XML_LocatePriorTwin( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos );
RESULT STDCALL XML_InsertNode( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszPath, IN LPCSTR pszData, IN PCNODEPROPERTY pProp, IN UINT nMode );
RESULT STDCALL XML_InsertChildHead( IN OUT PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszName, IN LPCSTR pszData, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_InsertChildTail( IN OUT PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszName, IN LPCSTR pszData, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_InsertPrior( IN OUT PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszName, IN LPCSTR pszData, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_InsertNext( IN OUT PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszName, IN LPCSTR pszData, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_SetInfoByPos( IN OUT PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszName, IN LPCSTR pszData );
RESULT STDCALL XML_GetInfoByPos( IN PCXMLSTRUCT pXml, IN POS nPos, OUT LPSTR pszName, IN UINT nNameSize, OUT LPSTR pszData, IN UINT nDataSize );
RESULT STDCALL XML_GetNextInfo( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos, OUT LPSTR pszName, IN UINT nNameSize, OUT LPSTR pszData, IN UINT nDataSize );
RESULT STDCALL XML_SetPropertyByPos( IN OUT PXMLSTRUCT pXml, IN POS nPos, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_GetPropertyByPos( IN PCXMLSTRUCT pXml, IN POS nPos, OUT PNODEPROPERTY pProp );
RESULT STDCALL XML_SetVal( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszPath, IN LPCSTR pszData );
RESULT STDCALL XML_GetVal( IN PCXMLSTRUCT pXml, IN LPCSTR pszPath, OUT LPSTR pszData, IN UINT nDataSize, OUT PPOS pPos );
RESULT STDCALL XML_SetProperty( IN OUT PXMLSTRUCT pXml, IN LPCSTR pszPath, IN PCNODEPROPERTY pProp );
RESULT STDCALL XML_GetProperty( IN PCXMLSTRUCT pXml, IN LPCSTR pszPath, OUT PNODEPROPERTY pProp, OUT PPOS pPos );
RESULT STDCALL XML_GetNextVal( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos, OUT LPSTR pszData, IN UINT nDataSize );
RESULT STDCALL XML_GetNextProperty( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos, OUT PNODEPROPERTY pProp );
RESULT STDCALL XML_GetPriorVal( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos, OUT LPSTR pszData, IN UINT nDataSize );
RESULT STDCALL XML_GetPriorProperty( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos, OUT PNODEPROPERTY pProp );
RESULT STDCALL XML_ExportNode( IN PCXMLSTRUCT pXml, IN POS nPos, IN UINT nLevel, IN BOOL bShort, OUT LPSTR pszMsg, OUT UINT *pnLen );
RESULT STDCALL XML_Export( IN PCXMLSTRUCT pXml, IN BOOL bShort, OUT LPSTR pszXMLMsg, IN OUT UINT *pnSize );
RESULT STDCALL XML_ExportToFile( IN PCXMLSTRUCT pXml, IN LPCSTR pszFile, IN BOOL bShort, IN BOOL bLangInfo );
RESULT STDCALL XML_ImportNode( IN PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszMsg, IN UINT nMsgLen );
RESULT STDCALL XML_Import( IN PXMLSTRUCT pXml, IN LPCSTR pszMsg );
RESULT STDCALL XML_ImportFromFile( IN PXMLSTRUCT pXml, IN LPCSTR pszFile );
UINT STDCALL XML_GetLen( IN PCXMLSTRUCT pXml );
UINT STDCALL XML_GetMaxLen( IN PCXMLSTRUCT pXml );
UINT STDCALL XML_SetMaxLen( IN PXMLSTRUCT pXml, UINT nNewLen );
/*---------------------------------------------------------------------*/
/*2003-05-19 新增加的函数*/
RESULT STDCALL XML_LocateParent( IN PCXMLSTRUCT pXml, IN OUT PPOS pPos );
RESULT STDCALL XML_LocateSubNode( IN PCXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszPath, IN UINT nMode, OUT PPOS pSubPos );
RESULT STDCALL XML_GetNodePath( IN PCXMLSTRUCT pXml, IN POS nPos, OUT LPSTR pszPath, IN OUT UINT *pnLen );
RESULT STDCALL XML_GetSubVal( IN PCXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszPath, OUT LPSTR pszData, IN UINT nDataSize, OUT PPOS pSubPos );
RESULT STDCALL XML_SetSubVal( IN PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszPath, IN LPCSTR pszData );
/*---------------------------------------------------------------------*/
/*2003-12-30 新增加的函数*/
RESULT STDCALL XML_ExportExt( IN PCXMLSTRUCT pXml, IN BOOL bShort, IN BOOL bLangInfo, OUT LPSTR pszXMLMsg, IN OUT UINT *pnSize );
/*---------------------------------------------------------------------*/
/*2004-01-09 新增加的函数*/
RESULT STDCALL XML_GetNameByPos( IN PCXMLSTRUCT pXml, IN POS nPos, OUT LPSTR pszName, IN UINT nNameSize );
RESULT STDCALL XML_GetValByPos( IN PCXMLSTRUCT pXml, IN POS nPos, OUT LPSTR pszData, IN UINT nDataSize );
RESULT STDCALL XML_SetNameByPos( IN PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszName );
RESULT STDCALL XML_SetValByPos( IN PXMLSTRUCT pXml, IN POS nPos, IN LPCSTR pszData );
/*-------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -