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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章