一、解析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
}