库参考手册
内容
- 函数
- mxmlAdd
- mxmlDelete
- mxmlElementDeleteAttr
- mxmlElementGetAttr
- mxmlElementSetAttr
- mxmlElementSetAttrf
- mxmlEntityAddCallback
- mxmlEntityGetName
- mxmlEntityGetValue
- mxmlEntityRemoveCallback
- mxmlFindElement
- mxmlIndexDelete
- mxmlIndexEnum
- mxmlIndexFind
- mxmlIndexNew
- mxmlIndexReset
- mxmlLoadFd
- mxmlLoadFile
- mxmlLoadString
- mxmlNewCDATA
- mxmlNewCustom
- mxmlNewElement
- mxmlNewInteger
- mxmlNewOpaque
- mxmlNewReal
- mxmlNewText
- mxmlNewTextf
- mxmlNewXML
- mxmlRelease
- mxmlRemove
- mxmlRetain
- mxmlSAXLoadFd
- mxmlSAXLoadFile
- mxmlSAXLoadString
- mxmlSaveAllocString
- mxmlSaveFd
- mxmlSaveFile
- mxmlSaveString
- mxmlSetCDATA
- mxmlSetCustom
- mxmlSetCustomHandlers
- mxmlSetElement
- mxmlSetErrorCallback
- mxmlSetInteger
- mxmlSetOpaque
- mxmlSetReal
- mxmlSetText
- mxmlSetTextf
- mxmlSetWrapMargin
- mxmlWalkNext
- mxmlWalkPrev
- 数据类型
- 结构体
- 联合
- 常量枚举
函数
mxmlAdd
添加一个节点到树中
void mxmlAdd (
mxml_node_t *parent,
int where,
mxml_node_t *child,
mxml_node_t *node
);
参数
-
parent
- 父节点 where
- 添加到哪里, MXML_ADD_BEFORE or MXML_ADD_AFTER child
- where的子节点或者使用MXML_ADD_TO_PARENT node
- 准备添加的节点
说明
添加一个指定的节点到父节点,如果child参数不是NULL,将这个新的节点添加到指定的"child"的前面或者后面(由where参数决定)。如果child参数是NULL,把新节点添加到子节点列表的最前面(MXML_ADD_BEFORE)或者时子节点列表的最后面(MXML_ADD_AFTER)。常量MXML_ADD_TO_PARENT 可以被用来指定一个NULL的child指针。
mxmlDelete
删除一个节点和它的所有的子节点。
void mxmlDelete (
mxml_node_t *node
);
参数
-
node
- 被删除的节点
说明
如果这个指定的节点有一个父节点,这个函数首先使用mxmlRemove() 函数从它的父节点中移除自己。
Mini-XML 2.4 mxmlElementDeleteAttr
删除一个参数
void mxmlElementDeleteAttr (
mxml_node_t *node,
const char *name
);
参数
-
node
- XML元素节点 name
- 属性名称
mxmlElementGetAttr
获取一个参数
const char *mxmlElementGetAttr (
mxml_node_t *node,
const char *name
);
参数
-
node
- XML元素节点 name
- 属性名称
返回值
属性值或者NULL
说明
如果node参数不是一个XML元素或者指定的属性名不存在则返回NULL。
mxmlElementSetAttr
设置一个属性。
void mxmlElementSetAttr (
mxml_node_t *node,
const char *name,
const char *value
);
参数
-
node
- XML元素节点 name
- 属性名称 value
- 属性值
说明
如果这个属性名已经存在,这个属性的值将被替换为新的字符串值。这个字符串值将被拷贝到这个XML元素节点,如果这个节点不是一个XML元素,则这个函数不做任何事。
Mini-XML 2.3 mxmlElementSetAttrf
设置一个XML元素属性使用一个格式化的值。
void mxmlElementSetAttrf (
mxml_node_t *node,
const char *name,
const char *format,
...
);
参数
-
node
- XML元素节点 name
- 属性名 format
- "printf"风格的属性值 ...
- 需要的附加参数(printf)风格
说明
如果这个属性名已经存在,这个属性的值将被替换为新的格式化字符串值。这个格式化后字符串值将被拷贝到这个XML元素节点,如果这个节点不是一个XML元素,则这个函数不做任何事。
mxmlEntityAddCallback
添加一个回调函数来将XML实体转换为Unicode编码字符。
int mxmlEntityAddCallback (void);
返回值
0 成功, -1 失败
mxmlEntityGetName
获取一个字符值对应的XML实体名字。
const char *mxmlEntityGetName (
int val
);
参数
-
val
- 字符值
返回值
XML实体名字或者NULL
说明
如果val不需要被标识为一个命名的XML实体,返回NULL。
mxmlEntityGetValue
获取一个代表到一个XML命名实体的字符。
int mxmlEntityGetValue (
const char *name
);
参数
-
name
- XML实体名字
返回值
字符值或者-1代表错误
说明
XML实体名字总是可以被关联到一个数字常量,如果这个名字未知则返回-1。
mxmlEntityRemoveCallback
删除一个XML实体回调。
void mxmlEntityRemoveCallback (void);
mxmlFindElement
搜索一个命名的XML元素。
mxml_node_t *mxmlFindElement (
mxml_node_t *node,
mxml_node_t *top,
const char *name,
const char *attr,
const char *value,
int descend
);
参数
-
node
- 当前节点 top
- 顶级节点 name
- XML元素名,或者NULL匹配所有元素 attr
- 属性名,或者NULL表示不匹配属性 value
- 属性值,或者NULL表示任何值 descend
- 在XML树中向下搜索模式: MXML_DESCEND, MXML_NO_DESCEND, 或者 MXML_DESCEND_FIRST
返回值
XMl元素节点或者NULL
说明
搜索可以被XML元素名,属性名和属性值所限定;任何名字或者值等于NULL被处理就相当于通配符,所以使用不同的搜索方法可以被实现用来查看所有的指定名称的XML元素或者是所有的具有指定属性的XML元素。参数: descend 确定了是否向下搜索子节点;通常你将使用 MXML_DESCEND_FIRST作为第一次搜索,然后使用使用 MXML_NO_DESCEND来发现更多的这个节点的直接子节点。 top 节点参数约束了搜索在一个指定节点的子节点中。
mxmlIndexDelete
删除一个索引。
void mxmlIndexDelete (
mxml_index_t *ind
);
参数
-
ind
- 被删除的索引
mxmlIndexEnum
返回索引中的下一个节点。
mxml_node_t *mxmlIndexEnum (
mxml_index_t *ind
);
参数
-
ind
- 进行枚举的索引
返回值
下一个节点或者NULL代表没有更多的节点
说明
返回节点顺序将按照索引的排序被返回。
mxmlIndexFind
搜索下一个匹配的节点。
mxml_node_t *mxmlIndexFind (
mxml_index_t *ind,
const char *element,
const char *value
);
参数
-
ind
- 进行搜索的索引 element
- 如不为NULL,代表想要搜索的XML元素名。 value
- 如不为NULL,代表想要搜索的属性值。
返回值
节点或者NULL代表没有发现。
说明
你在第一次使用一个特定的包含"element"和"value"字符串的集合来调用这个函数之前应该首先调用mxmlIndexReset()函数。如果"element"和"value"同时等于NULL则相当于调用了mxmlIndexEnum()函数。
mxmlIndexNew
创建一个新的索引。
mxml_index_t *mxmlIndexNew (
mxml_node_t *node,
const char *element,
const char *attr
);
参数
-
node
- XML 节点树 element
- 索引的XML元素名或者NULL代表所有元素 attr
- 索引的XML属性名或者NULL代表不使用。
返回值
新的索引
说明
被创建的索引将包含具备指定的元素名和/或属性所有的节点。如果"element" 和"attr"同时等于NULL,索引将包含一个被排序的完整节点树的列表。节点被按照XML元素名和选择的属性值(如果"attr"参数不等于NULL)进行排序。
mxmlIndexReset
重设索引中的枚举/搜索指针并且返回索引中的第一个节点。
mxml_node_t *mxmlIndexReset (
mxml_index_t *ind
);
参数
-
ind
- 准备重设的索引
返回值
第一个节点或者NULL代表索引为空。
说明
这个函数需要被首先调用,在第一次使用函数mxmlIndexEnum() 或 mxmlIndexFind()之前。
mxmlLoadFd
载入一个文件描述符到一个XML节点树。
mxml_node_t *mxmlLoadFd (
mxml_node_t *top,
int fd,
mxml_load_cb_t cb
);
参数
-
top
- 顶部节点 fd
- 需要进行读取的文件描述符 cb
- 回调函数或者 MXML_NO_CALLBACK
返回值
第一个节点或者NULL代表文件不能被读取。
说明
在指定文件中的所有节点将被添加到所指定的顶部节点。如果没有"top"顶部节点被提供,这个XML文件必须是规范的并且整个文件只有一个父节点为<?xml> 。 回调函数返回的值类型将被使用到子节点。如果 MXML_NO_CALLBACK 参数被指定,那么所有的子节点将都会是MXML_ELEMENT 或者 MXML_TEXT 其中之一的节点。
常量 MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK, MXML_REAL_CALLBACK, 和 MXML_TEXT_CALLBACK 定义了将载入指定类型的子节点。
mxmlLoadFile
载入一个文件到一个XML节点树。
mxml_node_t *mxmlLoadFile (
mxml_node_t *top,
FILE *fp,
mxml_load_cb_t cb
);
参数
-
top
- 顶级节点 fp
- 准备读取的文件 cb
- 回调函数或MXML_NO_CALLBACK
返回值
第一个节点或者NULL代表文件不能被读取。
说明
在指定文件中的所有节点将被添加到所指定的顶部节点。如果没有"top"顶部节点被提供,这个XML文件必须是规范的并且整个文件只有一个父节点为<?xml> 。 回调函数返回的值类型将被使用到子节点。如果 MXML_NO_CALLBACK 参数被指定,那么所有的子节点将都会是MXML_ELEMENT 或者 MXML_TEXT 其中之一的节点.
常量 MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK, MXML_REAL_CALLBACK, 和 MXML_TEXT_CALLBACK 定义了将载入指定类型的子节点。
mxmlLoadString
载入一个文件到一个XML节点树。
mxml_node_t *mxmlLoadString (
mxml_node_t *top,
const char *s,
mxml_load_cb_t cb
);
参数
-
top
- 顶级节点 s
- 准备读取的字符串 cb
- 回调函数或MXML_NO_CALLBACK
返回值
第一个节点或者NULL代表字符串中有错误。
说明
在指定字符串中的所有节点将被添加到所指定的顶部节点。如果没有"top"顶部节点被提供,这个XML字符串必须是规范的并且整个文件只有一个父节点为<?xml> 。 回调函数返回的值类型将被使用到子节点。如果 MXML_NO_CALLBACK 参数被指定,那么所有的子节点将都会是MXML_ELEMENT 或者 MXML_TEXT 其中之一的节点.
T常量 MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK, MXML_REAL_CALLBACK, 和 MXML_TEXT_CALLBACK 定义了将载入指定类型的子节点。
Mini-XML 2.3 mxmlNewCDATA
创建一个新的CDATA 节点.
mxml_node_t *mxmlNewCDATA (
mxml_node_t *parent,
const char *data
);
参数
-
parent
- 父节点或者MXML_NO_PARENT data
- 数据字符串
返回值
新的节点
说明
新的CDATA节点将被添加到指定父节点的子节点列表的最后,常量 MXML_NO_PARENT 可以被用来指定新的CDATA节点没有父节点。数据字符串必须是以空字符结尾,并被拷贝到新的CDATA节点。CDATA节点使用 MXML_ELEMENT 节点类型。
Mini-XML 2.1 mxmlNewCustom
创建一个新的用户自定义数据节点。
mxml_node_t *mxmlNewCustom (
mxml_node_t *parent,
void *data,
mxml_custom_destroy_cb_t destroy
);
参数
-
parent
- 父节点或者 MXML_NO_PARENT data
- 指向数据的指针 destroy
- 销毁数据使用的函数
返回值
新节点
说明
新的自定义节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的自定义节点没有父节点。NULL可以被通过,当数据节点不是动态分配或者是独立管理时。
mxmlNewElement
创建一个新的XML元素节点。
mxml_node_t *mxmlNewElement (
mxml_node_t *parent,
const char *name
);
参数
-
parent
- 父节点或MXML_NO_PARENT name
- XML元素名称
返回值
新节点
说明
新的XML元素节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的XML元素节点没有父节点。
mxmlNewInteger
创建一个新的整数节点。
mxml_node_t *mxmlNewInteger (
mxml_node_t *parent,
int integer
);
参数
-
parent
- 父节点或MXML_NO_PARENT integer
- 整形值
返回值
新节点
说明
新的整数节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的整数节点没有父节点。
mxmlNewOpaque
创建一个新的不透明字符串节点
mxml_node_t *mxmlNewOpaque (
mxml_node_t *parent,
const char *opaque
);
参数
-
parent
- 父节点或MXML_NO_PARENT opaque
- 不透明字符串
返回值
新节点
说明
新的不透明字符串节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的不透明字符串节点没有父节点。这个字符串必须是空字符结尾并被拷贝到新节点。
mxmlNewReal
创建一个新的浮点数节点。
mxml_node_t *mxmlNewReal (
mxml_node_t *parent,
double real
);
参数
-
parent
- 父节点或MXML_NO_PARENT real
- 浮点数值
返回值
新节点
说明
新的浮点数节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的浮点数节点没有父节点。
mxmlNewText
创建新的文本分段节点。
mxml_node_t *mxmlNewText (
mxml_node_t *parent,
int whitespace,
const char *string
);
参数
-
parent
- 父节点或MXML_NO_PARENT whitespace
- 1 = 有前导空格, 0 = 没有空格 string
- 字符串
返回值
新节点
说明
新的文本节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的文本节点没有父节点。参数:whitespace被用在指定是否在这个节点前面有前导空格。文本字符串必须时以空字符结尾并被拷贝到新的节点。
mxmlNewTextf
创建一个新的格式化的文本分段节点
mxml_node_t *mxmlNewTextf (
mxml_node_t *parent,
int whitespace,
const char *format,
...
);
参数
-
parent
- 父节点或MXML_NO_PARENT whitespace
- 1 = 有前导空格, 0 = 没有空格 format
- "printf"风格的格式化字符串 ...
- 需要的附加参数
返回值
新节点
说明
新的文本节点将被添加到指定父节点的子节点列表的最后。常量 MXML_NO_PARENT 可以被用来指定新的文本节点没有父节点。参数:whitespace被用在指定是否在这个节点前面有前导空格。格式化字符串必须时以空字符结尾并被格式化到新的节点。
Mini-XML 2.3 mxmlNewXML
创建一个新的XML文档树。
mxml_node_t *mxmlNewXML (
const char *version
);
参数
-
version
- 使用的版本号
返回值
新的 "?xml" 节点
说明
参数 "version" 指定了放在"?xml" 元素节点中的版本号。如果为NULL则假定为 "version 1.0"。
Mini-XML 2.3 mxmlRelease
释放一个节点。
int mxmlRelease (
mxml_node_t *node
);
参数
-
node
- 节点
返回值
新的引用计数
说明
当引用计数为0时,这个节点(以及所有子节点)被通过函数 mxmlDelete() 所删除。
mxmlRemove
移除一个节点从它的父节点中。
void mxmlRemove (
mxml_node_t *node
);
参数
-
node
- 被移除的节点
说明
不释放节点使用的内存,使用函数 mxmlDelete() 来释放。如果这个节点没有父节点则这个函数不做任何事。
Mini-XML 2.3 mxmlRetain
保留一个节点
int mxmlRetain (
mxml_node_t *node
);
参数
-
node
- 节点
返回值
新的引用计数
Mini-XML 2.3 mxmlSAXLoadFd
使用SAX回调从一个文件描述符中加载数据到一个XML节点树。
mxml_node_t *mxmlSAXLoadFd (
mxml_node_t *top,
int fd,
mxml_load_cb_t cb,
mxml_sax_cb_t sax_cb,
void *sax_data
);
参数
-
top
- 顶级节点 fd
- 进行读取的文件描述符 cb
- XML节点类型回调函数或者MXML_NO_CALLBACK sax_cb
- SAX 回调函数或者MXML_NO_CALLBACK sax_data
- SAX 用户数据
返回值
第一个节点或者NULL 代表文件不能被读取。
说明
在指定文件中的节点将被添加到指定的顶级节点中。如果"top"节点没有提供,这个XML文件必须是规范的并且整个文件只有一个父节点为<?xml> 。回调函数"cb"返回子节点的值类型。如果 MXML_NO_CALLBACK 参数被指定,那么所有的子节点将都会是MXML_ELEMENT 或者 MXML_TEXT 其中之一的节点。
常量 MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK, MXML_REAL_CALLBACK, 和MXML_TEXT_CALLBACK 被定义用于加载指定类型的子节点。
在SAX 回调函数中("sax_cb"),对于所有节点都必须调用mxmlRetain()函数用于保留为以后使用。否则,节点将在父节点被关闭时或者到达数据、注释、CDATA和指令节点时被删除。
Mini-XML 2.3 mxmlSAXLoadFile
使用SAX回调从一个文件中加载数据到一个XML节点树。
mxml_node_t *mxmlSAXLoadFile (
mxml_node_t *top,
FILE *fp,
mxml_load_cb_t cb,
mxml_sax_cb_t sax_cb,
void *sax_data
);
参数
-
top
- 顶级节点 fp
- 进行读取的文件 cb
- XML节点类型回调函数或者MXML_NO_CALLBACK sax_cb
- SAX 回调函数或者MXML_NO_CALLBACK sax_data
- SAX 用户数据
返回值
第一个节点或者NULL 代表文件不能被读取。
说明
在指定文件中的节点将被添加到指定的顶级节点中。如果"top"节点没有提供,这个XML文件必须是规范的并且整个文件只有一个父节点为<?xml> 。回调函数"cb"返回子节点的值类型。如果 MXML_NO_CALLBACK 参数被指定,那么所有的子节点将都会是MXML_ELEMENT 或者 MXML_TEXT 其中之一的节点。
常量 MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK, MXML_REAL_CALLBACK, 和MXML_TEXT_CALLBACK 被定义用于加载指定类型的子节点。
在SAX 回调函数中("sax_cb"),对于所有节点都必须调用mxmlRetain()函数用于保留为以后使用。否则,节点将在父节点被关闭时或者到达数据、注释、CDATA和指令节点时被删除。
Mini-XML 2.3 mxmlSAXLoadString
使用SAX回调从一个字符串中加载数据到一个XML节点树。
mxml_node_t *mxmlSAXLoadString (
mxml_node_t *top,
const char *s,
mxml_load_cb_t cb,
mxml_sax_cb_t sax_cb,
void *sax_data
);
参数
-
top
- 顶级节点 s
- 准备加载的字符串 cb
- XML节点类型回调函数或者MXML_NO_CALLBACK sax_cb
- SAX 回调函数或者MXML_NO_CALLBACK sax_data
- SAX 用户数据
返回值
第一个节点或者NULL 代表文件不能被读取。
说明
在指定字符串中的节点将被添加到指定的顶级节点中。如果"top"节点没有提供,这个XML字符串必须是规范的并且整个文件只有一个父节点为<?xml> 。回调函数"cb"返回子节点的值类型。如果 MXML_NO_CALLBACK 参数被指定,那么所有的子节点将都会是MXML_ELEMENT 或者 MXML_TEXT 其中之一的节点。
常量 MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK, MXML_REAL_CALLBACK, 和MXML_TEXT_CALLBACK 被定义用于加载指定类型的子节点。
在SAX 回调函数中("sax_cb"),对于所有节点都必须调用mxmlRetain()函数用于保留为以后使用。否则,节点将在父节点被关闭时或者到达数据、注释、CDATA和指令节点时被删除。
mxmlSaveAllocString
保存一个XML节点树到一个内部分配的字符串。
char *mxmlSaveAllocString (
mxml_node_t *node,
mxml_save_cb_t cb
);
参数
-
node
- 准备要写入的节点 cb
- 空白回调函数或者MXML_NO_CALLBACK
返回值
分配的字符串或者 NULL
说明
这个函数返回一个指向字符串的指针包含了描述整个XML节点树的文本。当你使用完这个字符串后需要使用free()函数来释放。如果这个节点产生了一个空字符或者字符串分配失败将返回NULL。
回调函数参数指定了一个函数用来在每个XML元素之前或者之后返回一个空白字符串或者NULL。如果指定了MXML_NO_CALLBACK,空格将仅被添加到具有前导空格的MXML_TEXT节点前面(node->value->text->whitespace = 1)和在一个打开XML元素标签的属性名称前面。
mxmlSaveFd
保存一个XML节点树到一个文件描述符。
int mxmlSaveFd (
mxml_node_t *node,
int fd,
mxml_save_cb_t cb
);
参数
-
node
- 准备要写入的节点 fd
- 准备写入的文件描述符 cb
- 空白回调函数或者MXML_NO_CALLBACK
返回值
成功返回 0,错误返回 -1。
说明
回调函数参数指定了一个函数用来在每个XML元素之前或者之后返回一个空白字符串或者NULL。如果指定了MXML_NO_CALLBACK,空格将仅被添加到具有前导空格的MXML_TEXT节点前面(node->value->text->whitespace = 1)和在一个打开XML元素标签的属性名称前面。
mxmlSaveFile
保存一个XML节点树到一个文件。
int mxmlSaveFile (
mxml_node_t *node,
FILE *fp,
mxml_save_cb_t cb
);
参数
-
node
- 准备要写入的节点 fp
- 准备写入的文件。 cb
- 空白回调函数或者MXML_NO_CALLBACK
返回值
成功返回 0,错误返回 -1。
说明
回调函数参数指定了一个函数用来在每个XML元素之前或者之后返回一个空白字符串或者NULL。如果指定了MXML_NO_CALLBACK,空格将仅被添加到具有前导空格的MXML_TEXT节点前面(node->value->text->whitespace = 1)和在一个打开XML元素标签的属性名称前面。
mxmlSaveString
保存一个XML节点树到一个字符串。
int mxmlSaveString (
mxml_node_t *node,
char *buffer,
int bufsize,
mxml_save_cb_t cb
);
参数
-
node
- 准备要写入的节点 buffer
- 字符串缓冲区 bufsize
- 字符串缓冲区大小 cb
- 空白回调函数或者MXML_NO_CALLBACK
返回值
字符串大小
说明
这个函数返回字符串需要字节总数,但是最多拷贝(bufsize-1)个字符到指定的buffer中。
回调函数参数指定了一个函数用来在每个XML元素之前或者之后返回一个空白字符串或者NULL。如果指定了MXML_NO_CALLBACK,空格将仅被添加到具有前导空格的MXML_TEXT节点前面(node->value->text->whitespace = 1)和在一个打开XML元素标签的属性名称前面。
Mini-XML 2.3 mxmlSetCDATA
设置一个CDATA元素节点的名称。
int mxmlSetCDATA (
mxml_node_t *node,
const char *data
);
参数
-
node
- 准备设置的节点 data
- 新的数据字符串
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个CDATA节点则节点不发生改变。
Mini-XML 2.1 mxmlSetCustom
对一个用户自定义数据节点设置数据和销毁回调函数。
int mxmlSetCustom (
mxml_node_t *node,
void *data,
mxml_custom_destroy_cb_t destroy
);
参数
-
node
- 被设置的节点 data
- 新的数据指针 destroy
- 新的销毁回调函数
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个用户自定义节点则节点不发生改变。
mxmlSetCustomHandlers
设置对于自定义数据的处理回调函数。
void mxmlSetCustomHandlers (
mxml_custom_load_cb_t load,
mxml_custom_save_cb_t save
);
参数
-
load
- 加载回调函数 save
- 保存回调函数
说明
加载回调函数接收一个节点指针和数据字符串,成功时必须返回 0,错误时返回一个非0值。
保存回调函数接收一个节点指针,成功时必须返回一个使用malloc分配的字符串,错误时返回NULL。
mxmlSetElement
设置XML元素节点的名字。
int mxmlSetElement (
mxml_node_t *node,
const char *name
);
参数
-
node
- 被设置的节点 name
- 新的名称字符串
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个XML元素节点则节点不发生改变。
mxmlSetErrorCallback
设置错误信息回调函数。
void mxmlSetErrorCallback (
mxml_error_cb_t cb
);
参数
-
cb
- 错误回调函数
mxmlSetInteger
设置一个整数节点的值。
int mxmlSetInteger (
mxml_node_t *node,
int integer
);
参数
-
node
- 被设置的节点 integer
- 整数值
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个整数节点则节点不发生改变。
mxmlSetOpaque
设置一个不透明字符串节点的值。
int mxmlSetOpaque (
mxml_node_t *node,
const char *opaque
);
参数
-
node
- 被设置的节点 opaque
- 不透明字符串
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个不透明字符串节点则节点不发生改变。
mxmlSetReal
设置一个浮点数节点的值。
int mxmlSetReal (
mxml_node_t *node,
double real
);
参数
-
node
- 被设置的节点 real
- 浮点数值
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个浮点数节点则节点不发生改变。
mxmlSetText
设置一个文本节点的值。
int mxmlSetText (
mxml_node_t *node,
int whitespace,
const char *string
);
参数
-
node
- 被设置的节点 whitespace
- 1 = 有前导空格, 0 = 没有前导空格 string
- 字符串
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个文本节点则节点不发生改变。
mxmlSetTextf
设置一个文本节点的值为一个格式化的字符串。
int mxmlSetTextf (
mxml_node_t *node,
int whitespace,
const char *format,
...
);
参数
-
node
- 被设置的节点 whitespace
- 1 = 有前导空格, 0 = 没有前导空格 format
- "printf"风格的格式化字符串 ...
- 需要的附加参数
返回值
成功返回 0,失败返回 -1。
说明
如果这个节点不是一个文本节点则节点不发生改变。
Mini-XML 2.3 mxmlSetWrapMargin
设置在保存XML数据时的自动折行位置。
void mxmlSetWrapMargin (
int column
);
参数
-
column
- 自动折行的列
说明
当"column" is <= 0时取消自动折行。
mxmlWalkNext
遍历到XML树中的下一个逻辑节点。
mxml_node_t *mxmlWalkNext (
mxml_node_t *node,
mxml_node_t *top,
int descend
);
参数
-
node
- 当前节点 top
- 顶级节点 descend
- 在XML树中的向下搜索模式 - MXML_DESCEND, MXML_NO_DESCEND, 或者 MXML_DESCEND_FIRST。
返回值
下一个节点或者NULL
说明
"descend"参数控制下一个节点是否考虑第一个子节点。"top"参数约束了遍历这个节点的所有子节点。
mxmlWalkPrev
遍历到XML树中的上一个逻辑节点。
mxml_node_t *mxmlWalkPrev (
mxml_node_t *node,
mxml_node_t *top,
int descend
);
参数
-
node
- 当前节点 top
- 顶级节点 descend
- 在XML树中的向下搜索模式 - MXML_DESCEND, MXML_NO_DESCEND, 或者 MXML_DESCEND_FIRST。
返回值
上一个节点或者NULL
说明
"descend"参数控制下一个节点是否考虑第一个子节点。"top"参数约束了遍历这个节点的所有子节点。
数据类型
mxml_attr_t
XML元素节点的属性值。
typedef struct mxml_attr_s mxml_attr_t;
mxml_custom_destroy_cb_t
自定义数据销毁回调函数原型
typedef void (*mxml_custom_destroy_cb_t)(void *);
mxml_custom_load_cb_t
自定义数据加载回调函数原型
typedef int (*mxml_custom_load_cb_t)( mxml_node_t *, const char *);
mxml_custom_save_cb_t
自定义数据保存回调函数原型
typedef char *(*mxml_custom_save_cb_t)( mxml_node_t *);
Mini-XML 2.1 mxml_custom_t
自定义XML类型值
typedef struct mxml_custom_s mxml_custom_t;
mxml_element_t
XML元素值
typedef struct mxml_element_s mxml_element_t;
mxml_error_cb_t
错误回调函数原型
typedef void (*mxml_error_cb_t)(const char *);
mxml_index_t
XML节点索引
typedef struct mxml_index_s mxml_index_t;
mxml_load_cb_t
加载回调函数
typedef mxml_type_t (*mxml_load_cb_t)( mxml_node_t *);
mxml_node_t
XML节点
typedef struct mxml_node_s mxml_node_t;
mxml_save_cb_t
保存回调函数
typedef const char *(*mxml_save_cb_t)( mxml_node_t *, int);
mxml_sax_cb_t
SAX 回调函数
typedef void (*mxml_sax_cb_t)( mxml_node_t *, mxml_sax_event_t, void *);
mxml_sax_event_t
SAX 事件类型.
typedef enum mxml_sax_event_e mxml_sax_event_t;
mxml_text_t
XML文本节点值
typedef struct mxml_text_s mxml_text_t;
mxml_value_t
XML节点值
typedef union mxml_value_u mxml_value_t;
Structures
mxml_attr_s
XML元素的属性值
struct mxml_attr_s {
char *name;
char *value;
};
成员
-
name
- 属性名 value
- 属性值
Mini-XML 2.1 mxml_custom_s
自定义XML节点值
struct mxml_custom_s {
void *data;
mxml_custom_destroy_cb_t destroy;
};
成员
-
data
- 指向一个自定义数据的指针(已分配的)。 destroy
- 指向销毁回调函数的指针
mxml_element_s
XML元素值
struct mxml_element_s {
mxml_attr_t *attrs;
char *name;
int num_attrs;
};
成员
-
attrs
- 包含的所有属性 name
- XML元素名称 num_attrs
- 包含的属性数量
mxml_index_s
XML节点索引
struct mxml_index_s {
int alloc_nodes;
char *attr;
int cur_node;
mxml_node_t **nodes;
int num_nodes;
};
成员
-
alloc_nodes
- 在索引中的已分配的节点数 attr
- 节点使用的属性或者NULL cur_node
- 当前节点 nodes
- 包含的节点数组 num_nodes
- 在索引中的节点总数
mxml_node_s
XML 节点。
struct mxml_node_s {
struct mxml_node_s *child;
struct mxml_node_s *last_child;
struct mxml_node_s *next;
struct mxml_node_s *parent;
struct mxml_node_s *prev;
int ref_count;
mxml_type_t type;
void *user_data;
mxml_value_t value;
};
成员
-
child
- 第一个子节点 last_child
- 最后一个子节点 next
- 同级的下一个节点(在同一个父节点下) parent
- 父节点 prev
- 同级的上一个节点(在同一个父节点下) ref_count
- 使用计数器(引用计数) type
- 节点类型 user_data
- 用户关联数据 value
- 节点值
mxml_text_s
XML文本节点值
struct mxml_text_s {
char *string;
int whitespace;
};
成员
-
string
- 字符串片断 whitespace
- 是否有前导空格?
联合
mxml_value_u
XML节点值。
union mxml_value_u {
mxml_custom_t custom;
mxml_element_t element;
int integer;
char *opaque;
double real;
mxml_text_t text;
};
成员
-
custom Mini-XML 2.1
- 自定义数据 element
- 元素 integer
- 整数 opaque
- 不透明字符串 real
- 浮点数 text
- 文本片断
常量
mxml_sax_event_e
SAX 事件类型。
常量
-
MXML_SAX_CDATA
- CDATA 节点 MXML_SAX_COMMENT
- 注释节点 MXML_SAX_DATA
- 数据节点 MXML_SAX_DIRECTIVE
- 处理指令节点 MXML_SAX_ELEMENT_CLOSE
- XML元素关闭节点 MXML_SAX_ELEMENT_OPEN
- XML元素开放节点
mxml_type_e
XML 节点类型
常量
-
MXML_CUSTOM Mini-XML 2.1
- 自定义数据 MXML_ELEMENT
- XML 元素并包含属性 MXML_IGNORE Mini-XML 2.3
- 忽略/抛弃的节点 MXML_INTEGER
- 整数值 MXML_OPAQUE
- 透明字符串值 MXML_REAL
- 浮点数值 MXML_TEXT
- 文本片断