一、解析XML
xmlDocPtrxmlParseFile(const char *
filename);
功能:解析一個XML檔案并且生成樹。
參數:filename,要解析的xml檔案
傳回值:如果檔案合格,傳回指向XML樹的指針;
否則,傳回NULL;
xmlDocPtrxmlReadFile(const char * filename, const char *
encoding, int options)
功能:解析一個來自檔案系統或者網絡的xml檔案。
參數:filename,一個檔案名稱或者URL
encoding,檔案的編碼格式或者NULL
options,xml檔案解析參數(組合)
傳回值:隻想XML樹的指針或者NULL
xmlDocPtrxmlRecoverFile(const char *
filename)
功能:同xmlParseFile,隻是當檔案的格式并不正确的時候xmlRecoverFile無論如何仍會試圖建立一棵樹。
參數:同xmlParseFile
傳回值:同xmlParseFile
二、建立和釋放xmlDocPtr
xmlDocPtrxmlNewDoc(const xmlChar *
version)
功能:建立一個新的XML文檔
參數:使用xmlChar類型指定xml文檔的版本,例如
xmlDocPtr doc = xmlNewDoc(BAD_CAST
"1.0");
傳回值:一個新的xml文檔
void xmlFreeDoc(xmlDocPtr cur)
功能:釋放一個XML文檔中的所有結構,包括tree。
參數:一個XML文檔
傳回值:無
三、擷取和設定root借點
xmlNodePtrxmlDocGetRootElement(xmlDocPtr
doc)
功能:擷取XML文檔的root節點
參數:XML文檔
傳回值:XML文檔的root節點或者NULL
xmlNodePtrxmlDocSetRootElement(xmlDocPtr
doc,xmlNodePtr root)
功能:設定XML文檔的root節點。
參數:doc,xml文檔
root,要被設定為root的xml節點
傳回值:傳回原來的root節點,如果原來沒有root節點則傳回NULL。
四、建立、擷取添加子節點
xmlNodePtr xmlNewChild (xmlNodePtr
parent, xmlNsPtr ns, const xmlChar * name, const xmlChar *
content)
功能:建立一個新的子節點并添加到父節點的節點連結清單的末端,ns和content是可選的。
參數:parent,父節點
ns,目前還不明确
name,建立子節點的名稱
content,建立子節點的内容
傳回值:指向新節點的指針
xmlNodePtrxmlFirstElementChild(xmlNodePtr
parent)
功能:擷取一個節點的首個子節點。
參數:父節點指針
傳回值:第一個子節點的指針或者NULL
xmlNodePtr xmlLastElementChild(xmlNodePtr parent)
功能:擷取一個節點的最後一個子節點
參數:父節點指針
傳回值:最後一個子節點的指針或者NULL
xmlNodePtr xmlAddChild (xmlNodePtr
parent, xmlNodePtr cur)
功能:給父節點添加一個新的子節點,該子節點被添加到子節點連結清單的尾部。
參數:parent,父節點
cur,子節點
傳回值:傳回子節點或者NULL
五、建立、設定、擷取、删除屬性
xmlAttrPtr xmlNewProp(xmlNodePtr node, const xmlChar *
name, const xmlChar * value)
功能:為一個節點建立一個屬性
參數:node,節點
name,屬性名稱
value,屬性的值
傳回值:指向建立屬性的指針
xmlAttrPtrxmlSetProp(xmlNodePtr node,const xmlChar * name,const xmlChar * value)功能:設定一個節點的屬性值。
參數:node,節點指針
name,屬性名稱
value,屬性值
傳回值:被設定的屬性的指針
xmlChar *xmlGetProp(xmlNodePtr node,const xmlChar * name)
功能:根據屬性名稱擷取一個節點的屬性。
參數:node,被擷取的節點
name,要擷取的屬性名稱
傳回值:屬性的值
voidxmlFreeProp(xmlAttrPtr cur)
功能:釋放一個屬性結構
參數:cur,要釋放屬性
傳回值:無
六、設定、擷取節點内容content
voidxmlNodeSetContent(xmlNodePtr
cur,const xmlChar * content)
功能:替換節點的内容
參數:cur,節點指針
content,要設定的content
傳回值:無
xmlChar * xmlNodeGetContent(xmlNodePtr cur)
功能:擷取一個節點的内容
參數:cur,節點指針
傳回值:節點的content或者NULL,傳回的内容需要手動釋放。
七、建立和删除節點
xmlNodePtrxmlNewNode(xmlNsPtr ns,const xmlChar * name)
功能:建立一個新節點
參數:ns,目前還不明确
name,節點名稱
傳回值:傳回一個執行新節點的指針
void xmlUnlinkNode (xmlNodePtr cur)
功能:解除一個節點與它的目前上下文的連結,節點沒有被釋放,如果需要自由節點後,取消使用xmlfreenode()正常釋放它。請注意,命名空間節點不能被解除,因為他們沒有他們的父節點的指針。
參數:節點指針
傳回值:無
voidxmlFreeNode (xmlNodePtr cur)
功能:釋放一個節點,這是一個遞歸行為,所有的位元組點也将被釋放,該函數并沒有接觸子節點與連結清單的關聯,是以需要先使用xmlUnlinkNode()函數接觸關聯。
參數:節點指針
傳回值:無
八、建立兄弟節點sibling
xmlNodePtrxmlAddNextSibling(xmlNodePtr
cur,xmlNodePtr elem)
功能:在指定節點的後面添加一個兄弟節點
參數:cur,指定節點
elem,下一個兄弟節點
傳回值:指向新節點的指針或者NULL
九、寫入xml檔案
intxmlSaveFile(const char *
filename,xmlDocPtr cur)
功能:寫一個XML文檔到指定的檔案中
參數:filename,檔案名稱
cur,文檔指針
傳回值:如果成功則傳回寫入的位元組數,否則傳回-1.
int xmlSaveFileEnc (const char *
filename, xmlDocPtr cur, const char * encoding)
功能:寫一個XML文檔到指定的檔案中,并且轉換檔案編碼格式為制定的格式。
參數:filename,檔案名稱
cur,文檔指針
encoding,指定的編碼格式
傳回值:如果成功則傳回寫入的位元組數,否則傳回-1.
十、資料結構xmlNode
Structure xmlNode
struct _xmlNode {
void *_private: application data
type: type number, must be second !
const *name: the name of the node, or the entity
struct _xmlNode *children: parent->childs link
struct _xmlNode *last: last child link
struct _xmlNode *parent: child->parent link
struct _xmlNode *next: next sibling link
struct _xmlNode *prev: previous sibling link
struct _xmlDoc *doc: the containing document End of common p
*ns: pointer to the associated namespace
*content : the content
struct _xmlAttr *properties: properties list
*nsDef: namespace definitions on this node
void *psvi: for type/PSVI informations
unsigned shortline: line number
unsigned shortextra: extra data for XPath/XSLT
}