之前写了个小程序,想要使用xml进行数据的收发,所以需要学习下XML的处理。
了解到对xml的处理有两种常见的库,libxml和tinyxml。
考虑到tinyxml是C++的api,而我使用纯C写的程序,所以放弃tinyxml,使用libxml来对XML进行操作。
主要变量
xmlChar
xmlstring.h : typedef unsigned char xmlChar;
该变量一般使用在xmlNodePtr->name等需要使用字符串的地方。
xmlDocPtr
该变量是一个结构体,可以简单理解为指向xml文档的文件描述符。
xmlNodePtr
该变量是一个结构体。
typedef struct _xmlNode xmlNode;
typedef xmlNode *xmlNodePtr;
struct _xmlNode {
void *_private; // 应用数据
xmlElementType type; // 元素类型
const xmlChar *name; // 节点名称
struct _xmlNode *children; // 指向自己的第一个孩子节点
struct _xmlNode *last; // 指向自己的最后一个孩子节点
struct _xmlNode *parent; // 指向自己的父节点
struct _xmlNode *next; // 指向下一个兄弟节点
struct _xmlNode *prev; // 指向前一个兄弟节点
struct _xmlDoc *doc; // 包含文件
/* 以上是通用模块 */
xmlNs *ns; // 指向关联的命名空间
xmlChar *content; // 内容
struct _xmlAttr *properties;// 属性列表
xmlNs *nsDef; // 定义在该节点上的命名空间
void *psvi; // /PSVI 信息
unsigned short line; // 行数
unsigned short extra; // XPath/XSLT的额外信息