下面介绍的是libxml主要的数据类型,对于应用编程来说,这些数据类型是需要了解和掌握的。
1.内部字符类型xmlChar
xmlChar是libxml2中的字符类型,库中所有字符、字符串都是基于这个数据类型。它的定义在xmlstring.h中,定义说明如下:
typedef unsigned char xmlChar;
使用unsigned char作为内部字符格式是考虑到它能很好适应UTF-8编码,而UTF-8编码正是libxml2的内部编码,其他格式的编码要转换为这个编码才能在libxml2中使用。
xmlChar *常在libxml2中作为字符串指针类型,很多函数会返回一个动态分配内存的xmlChar *变量,使用这样的函数时需要手工删除内存。
2.xmlChar相关函数
如同标准C中的char类型一样,xmlChar也有动态内存分配、字符串操作等相关函数。例如xmlMalloc是动态分配内存的函数,xmlFree是配套的释放内存函数,xmlStrcmp是字符串比较函数等。基本上xmlChar字符串相关函数都在xmlstring.h中定义,而动态内存分配函数在xmlmemory.h头文件中定义。
3.xmlChar*与其他类型之间的转换
在实际编程中,总是需要在xmlChar *和char *之间进行强制类型转换,所以定义了一个宏BAD_CAST,其定义如下:
#define BAD_CAST (xmlChar *)
4.XML中常用到的重定义
在XML程序中,会经常看到xmlChildrenNode这个名称,其实这个名称是定义在tree.h中的重定义。其重定义如下ÿ