mini-xml(mxml)开发手册--库参考手册

库参考手册

内容

  • 函数
    • 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文件必须是规范的并且整个文件只有一个父节点为 。 回调函数返回的值类型将被使用到子节点。如果 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文件必须是规范的并且整个文件只有一个父节点为 。 回调函数返回的值类型将被使用到子节点。如果 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字符串必须是规范的并且整个文件只有一个父节点为 。 回调函数返回的值类型将被使用到子节点。如果 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文件必须是规范的并且整个文件只有一个父节点为 。回调函数"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文件必须是规范的并且整个文件只有一个父节点为 。回调函数"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字符串必须是规范的并且整个文件只有一个父节点为 。回调函数"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
文本片断

你可能感兴趣的:(C/C++Research)