minixml开发手册

库参考手册
内容
函数
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
数据类型
mxml_attr_t
mxml_custom_destroy_cb_t
mxml_custom_load_cb_t
mxml_custom_save_cb_t
mxml_custom_t
mxml_element_t
mxml_error_cb_t
mxml_index_t
mxml_load_cb_t
mxml_node_t
mxml_save_cb_t
mxml_sax_cb_t
mxml_sax_event_t
mxml_text_t
mxml_value_t
结构体
mxml_attr_s
mxml_custom_s
mxml_element_s
mxml_index_s
mxml_node_s
mxml_text_s
联合
mxml_value_u
常量枚举
mxml_sax_event_e
mxml_type_e
函数
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 失败

回调函数用来将类似于"&"之类的XML实体字符串转化为用户设定的Unicode编码。此函数的原型应该为:int mxmlEntityAddCallback(int (*cb)(const char *name)) 参数为自定义中的回调函数。目前仅支持将实体转换为单个字符的转换,而不支持实体字符串。 Z.F
mxmlEntityGetName
获取一个字符值对应的XML实体名字。

const char *mxmlEntityGetName ( 
    int val 
);

参数
val
字符值
返回值
XML实体名字或者NULL

说明
如果val不需要被标识为一个命名的XML实体,返回NULL。

如:val = '&',将返回"&" Z.F
mxmlEntityGetValue
获取一个代表到一个XML命名实体的字符。

int mxmlEntityGetValue ( 
    const char *name 
);

参数
name
XML实体名字
返回值
字符值或者-1代表错误

说明
XML实体名字总是可以被关联到一个数字常量,如果这个名字未知则返回-1。

mxmlEntityRemoveCallback
删除一个XML实体回调。

void mxmlEntityRemoveCallback (void);

函数原型应该是:void mxmlEntityRemoveCallback(int (*cb)(const char *name)); Z.F
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可以被通过,当数据节点不是动态分配或者是独立管理时。

最后一句NULL应该是指参数:destroy,表示不使用销毁函数。 Z.F
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树字符串长度为200个字节,但缓冲区只有100字节,则返回200,但只拷贝了99个字符,最后一个为空字符。Z.F

回调函数参数指定了一个函数用来在每个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
文本片断
————————————————
版权声明:本文为CSDN博主「duanlove」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/duanlove/article/details/6919934

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值