📄 xml.h
字号:
XMLComment** GetComments();
unsigned int GetCommentsNum();
int AddComment(XMLComment*,int InsertBeforeElement);
int AddComment(const char*,int);
int RemoveComment(unsigned int i);
int RemoveAllComments();
// XMLCData
XMLCData** GetCDatas();
unsigned int GetCDatasNum();
int AddCData(XMLCData*,int InsertBeforeElement);
int AddCData(const char*,int);
int RemoveCData(unsigned int i);
int RemoveAllCDatas();
int AddVariable(XMLVariable*);
int AddVariable(const char*,const char*);
#ifdef XML_OPTIONAL_MIME
int AddBinaryVariable(char*,char*,int);
#endif
int FindVariable(XMLVariable*);
int FindVariable(const char* x);
XMLVariable* FindVariableZ(XMLVariable*);
XMLVariable* FindVariableZ(const char* x,bool ForceCreate = false,char* defnew = 0,bool Temp = false);
int RemoveVariable(unsigned int i);
int RemoveVariableAndKeep(unsigned int i,XMLVariable** vr);
int RemoveAllVariables();
int RemoveTemporalVariables(bool Deep = false);
int AddContent(XMLContent* v,int InsertBeforeElement);
int AddContent(const char*,int);
int RemoveContent(unsigned int i);
void RemoveAllContents();
XMLContent** GetContents();
unsigned int GetContentsNum();
XMLElement* GetElementInSection(const char*);
int XMLQuery(const char* expression,XMLElement** rv,unsigned int deep = 0xFFFFFFFF);
XMLElement* GetParent();
XMLElement** GetChildren();
unsigned int GetChildrenNum();
unsigned int GetAllChildren(XMLElement**,unsigned int deep = 0xFFFFFFFF);
unsigned int GetAllChildrenNum(unsigned int deep = 0xFFFFFFFF);
XMLVariable** GetVariables();
unsigned int GetVariableNum();
void Export(FILE* fp,int ShowAll,XML_SAVE_MODE SaveMode,XML_TARGET_MODE TargetMode = XML_TARGET_MODE_FILE,XMLHeader* hdr = 0,class XMLTransform* eclass = 0,class XMLTransformData* edata = 0);
void SetExportFormatting(XMLEXPORTFORMAT* xf);
void SetElementName(const char*);
size_t GetElementName(char*,int NoDecode = 0);
size_t GetElementFullName(char*,int NoDecode = 0);
size_t GetElementUniqueString(char*);
void SetTemporal(bool);
bool IsTemporal();
int GetType();
static void Write16String(FILE* fp,const char* s);
private:
XMLElement(XMLElement&);
unsigned __int64 param;
char* el; // element name
int type; // type, 0 element
XMLElement* parent; // one
XMLElement** children; // many
XMLVariable** variables; // many
XMLComment** comments; // many
XMLContent** contents; // many;
XMLCData** cdatas;
unsigned int childrennum;
unsigned int variablesnum;
unsigned int commentsnum;
unsigned int contentsnum;
unsigned int cdatasnum;
bool Temporal;
Z<XMLBORROWELEMENT> BorrowedElements;
unsigned int NumBorrowedElements;
int SpaceForElement(unsigned int);
int SpaceForVariable(unsigned int);
int SpaceForComment(unsigned int);
int SpaceForContent(unsigned int);
int SpaceForCData(unsigned int);
int TotalChildPointersAvailable;
int TotalVariablePointersAvailable;
int TotalCommentPointersAvailable;
int TotalContentPointersAvailable;
int TotalCDataPointersAvailable;
XMLEXPORTFORMAT xfformat;
static void printc(FILE* fp,XMLElement* root,int deep,int ShowAll,XML_SAVE_MODE SaveMode,XML_TARGET_MODE TargetMode);
void SetParent(XMLElement*);
};
class XMLVariable
{
public:
XMLVariable(const char*,const char*,int NoDecode = 0,bool Temp = false);
~XMLVariable();
XMLVariable(XMLVariable&);
XMLVariable& operator =(XMLVariable&);
size_t MemoryUsage();
void CompressMemory();
bool IntegrityTest();
int Compare(XMLVariable*);
XMLElement* SetOwnerElement(XMLElement*);
size_t GetName(char*,int NoDecode = 0);
size_t GetValue(char*,int NoDecode = 0);
int GetValueInt();
#ifdef _atoi64
__int64 GetValueInt64();
#endif
float GetValueFloat();
void SetName(const char*,int NoDecode = 0);
void SetValue(const char*,int NoDecode = 0);
void SetValueInt(int);
void SetValueInt64(__int64);
void SetValueFloat(float);
template <typename T> void SetValueX(T t,const char* fmt);
template <typename T> T GetValueX(const char* fmt);
XMLVariable* Duplicate();
void Copy();
XMLElement* GetOwnerElement();
void SetTemporal(bool);
bool IsTemporal();
#ifdef XML_OPTIONAL_MIME
size_t GetBinaryValue(char*);
size_t SetBinaryValue(char*,int);
#endif
private:
void Clear();
char* vn;
char* vv;
XMLElement* owner;
bool Temporal;
};
class XMLHeader
{
public:
// constructors/destructor
XMLHeader(const char* ht);
operator char*();
size_t MemoryUsage();
void CompressMemory();
bool IntegrityTest();
int Compare(XMLHeader*);
void SetEncoding(const char*);
XMLHeader* Duplicate();
XMLHeader(XMLHeader&);
XMLHeader& operator =(XMLHeader&);
~XMLHeader();
// XMLComment
XMLComment** GetComments();
unsigned int GetCommentsNum();
int AddComment(XMLComment*,int pos);
int RemoveComment(unsigned int i);
int RemoveAllComments();
int SpaceForComment(unsigned int);
void Export(FILE* fp,int HeaderMode,XML_TARGET_MODE TargetMode = XML_TARGET_MODE_FILE,class XMLTransform* eclass = 0,class XMLTransformData* edata = 0);
private:
void Clear();
int TotalCommentPointersAvailable;
char* hdr;
unsigned int commentsnum;
XMLComment** comments;
};
class XMLComment
{
public:
// constructors/destructor
XMLComment(XMLElement* p,int ElementPosition,const char* ht);
operator char*();
void SetComment(const char* ht);
size_t MemoryUsage();
void CompressMemory();
bool IntegrityTest();
int Compare(XMLComment*);
XMLComment(XMLComment&);
XMLComment& operator =(XMLComment&);
~XMLComment();
XMLComment* Duplicate();
void SetParent(XMLElement* p,int ep);
int GetEP();
private:
XMLElement* parent;
char* c;
int ep; // Element Position (Before)
};
class XMLContent
{
public:
// constructors/destructor
XMLContent(XMLElement* p,int ElementPosition,const char* ht,int NoDecode = 0);
size_t GetValue(char*,int NoDecode = 0);
void SetValue(const char*,int NoDecode = 0);
size_t MemoryUsage();
void CompressMemory();
bool IntegrityTest();
int Compare(XMLContent*);
XMLContent(XMLContent&);
XMLContent& operator =(XMLContent&);
~XMLContent();
XMLContent* Duplicate();
void SetParent(XMLElement* p,int ep);
int GetEP();
private:
XMLElement* parent;
char* c;
int ep; // Element Position (Before)
};
class XMLCData
{
public:
// constructors/destructor
XMLCData(XMLElement* p,int ElementPosition,const char* ht);
operator char*();
void SetCData(const char* ht);
size_t MemoryUsage();
void CompressMemory();
bool IntegrityTest();
int Compare(XMLCData*);
XMLCData(XMLCData&);
XMLCData& operator =(XMLCData&);
~XMLCData();
XMLCData* Duplicate();
void SetParent(XMLElement* p,int ep);
int GetEP();
private:
XMLElement* parent;
char* c;
int ep; // Element Position (Before)
};
// public functions
size_t XMLGetString(const char* section,const char* Tattr,const char* defv,char*out,const size_t maxlen,const char* xml,XML* af = 0);
int XMLGetInt(const char* item,const char* attr,const int defv,const char* xml,XML* af = 0);
#ifdef _WIN32
__int64 XMLGetInt64(const char* item,const char* attr,const __int64 defv,const char* xml,XML* af = 0);
#endif
float XMLGetFloat(const char* item,const char* attr,const float defv,const char* xml,XML* af = 0);
size_t XMLGetBinaryData(const char* item,const char* attr,const char* defv,char*out,const size_t maxlen,const char* xml,XML* af = 0);
int XMLSetString(const char* section,const char* Tattr,char*out,const char* xml,XML* af = 0);
int XMLSetInt(const char* section,const char* attr,int v,const char* xml,XML* af = 0);
#ifdef _WIN32
int XMLSetString(const char* section,const char* Tattr,wchar_t*out,const char* xml,XML* af = 0);
int XMLSetInt64(const char* section,const char* attr,__int64 v,const char* xml,XML* af = 0);
#endif
int XMLSetFloat(const char* section,const char* attr,float v,const char* xml,XML* af = 0);
int XMLSetBinaryData(const char* section,const char* attr,char* data,int len,const char* xml,XML* af = 0);
int XMLRenameElement(const char* section,const char* newname,const char* xml,XML* af = 0);
#ifndef __SYMBIAN32__
#ifdef XML_USE_STL
int XMLGetAllVariables(const char* section,vector<char*>* vnames,vector<char*>* vvalues,const char*xml);
int XMLGetAllItems(const char* section,vector<char*>* vnames,const char*xml);
#else
int XMLGetAllVariables(const char* section,char** vnames,char** vvalues,const char*xml);
int XMLGetAllItems(const char* section,char** vnames,const char*xml);
#endif
#endif
// XMLTransform class
class XMLTransformData
{
public:
XMLTransformData() {}
};
class XMLTransform
{
public:
XMLTransform(XMLTransformData*) { }
virtual ~XMLTransform() {}
virtual size_t Encrypt(const char*src,size_t srclen,int srctype,char* dst,size_t dstlen,XMLTransformData* data = 0) = 0;
virtual size_t Decrypt(const char*src,size_t srclen,int srctype,char* dst,size_t dstlen,XMLTransformData* data = 0) = 0;
};
class XMLHelper
{
public:
// static functions
static char* FindXMLClose(char* s);
static XMLElement* ParseElementTree(XMLHeader* hdr,XMLElement* parent,char* tree,char** EndValue,XML_PARSE_STATUS& iParseStatus);
static void AddBlankVariable(XMLElement* parent,char *a2,int Pos);
static int pow(int P,int z);
};
#ifdef XML_USE_NAMESPACE
};
#endif
inline wchar_t* UTF8ToWideChar(const char *pMBString)
{
if (pMBString == NULL)
{
return NULL;
}
int nSize = MultiByteToWideChar(CP_UTF8, 0, pMBString, -1, NULL, 0);
if (nSize <= 0)
{
return NULL;
}
wchar_t *pRetString = new wchar_t[nSize + 1];
if (pRetString == NULL)
{
return NULL;
}
ZeroMemory(pRetString, (nSize + 1)*sizeof(wchar_t));
if (!(MultiByteToWideChar(CP_UTF8, 0, pMBString, -1, pRetString, nSize + 1) > 0))
{
delete [] pRetString;
pRetString = NULL;
}
return pRetString;
}
inline wchar_t* CharToWideChar(const char* str)
{
int nLength = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL,0);
wchar_t *pw = new wchar_t[nLength];
MultiByteToWideChar(CP_ACP, 0, str, -1, pw, nLength);
return pw;
}
#endif // _XML_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -