分类: C/C++
2014-12-27 10:08:51
一、解析XML
xmlDocPtr xmlParseFile (const char * filename);
功 能:解析一个XML文件并且生成树。
参 数:filename,要解析的xml文件
返回值:如果文件合格,返回指向XML树的指针;
否则,返回NULL;
xmlDocPtr xmlReadFile (const char * filename, const char * encoding, int options)
功 能:解析一个来自文件系统或者网络的xml文件。
参 数:filename,一个文件名称或者URL
encoding,文件的编码格式或者NULL
options,xml文件解析参数(组合)
返回值:只想XML树的指针或者NULL
xmlDocPtr xmlRecoverFile (const char * filename)
功 能:同xmlParseFile,只是当文件的格式并不正确的时候xmlRecoverFile无论如何仍会试图建立一棵树。
参 数:同xmlParseFile
返回值:同xmlParseFile
二、新建和释放xmlDocPtr
xmlDocPtr xmlNewDoc (const xmlChar * version)
功 能:创建一个新的XML文档
参 数:使用xmlChar类型指定xml文档的版本,例如
xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0");
返回值:一个新的xml文档
void xmlFreeDoc (xmlDocPtr cur)
功 能:释放一个XML文档中的所有结构,包括tree。
参 数:一个XML文档
返回值:无
三、获取和设置root借点
xmlNodePtr xmlDocGetRootElement (xmlDocPtr doc)
功 能:获取XML文档的root节点
参 数:XML文档
返回值:XML文档的root节点或者NULL
xmlNodePtr xmlDocSetRootElement (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,新建子节点的内容
返回值:指向新节点的指针
xmlNodePtr xmlFirstElementChild (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,属性的值
返回值:指向新建属性的指针
xmlAttrPtr xmlSetProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value)
功 能:设置一个节点的属性值。
参 数:node,节点指针
name,属性名称
value,属性值
返回值:被设置的属性的指针
xmlChar * xmlGetProp (xmlNodePtr node, const xmlChar * name)
功 能:根据属性名称获取一个节点的属性。
参 数:node,被获取的节点
name,要获取的属性名称
返回值:属性的值
void xmlFreeProp (xmlAttrPtr cur)
功 能:释放一个属性结构
参 数:cur,要释放属性
返回值:无
六、设置、获取节点内容content
void xmlNodeSetContent (xmlNodePtr cur,const xmlChar * content)
功 能:替换节点的内容
参 数:cur,节点指针
content,要设置的content
返回值:无
xmlChar * xmlNodeGetContent (xmlNodePtr cur)
功 能:获取一个节点的内容
参 数:cur,节点指针
返回值:节点的content或者NULL,返回的内容需要手动释放。
七、新建和删除节点
xmlNodePtr xmlNewNode (xmlNsPtr ns, const xmlChar * name)
功 能:创建一个新节点
参 数:ns,目前还不明确
name,节点名称
返回值:返回一个执行新节点的指针
void xmlUnlinkNode (xmlNodePtr cur)
功 能:解除一个节点与它的当前上下文的链接,节点没有被释放,如果需要自由节点后,取消使用xmlfreenode()常规释放它。请注意,命名空间节点不能被解除,因为他们没有他们的父节点的指针。
参 数:节点指针
返回值:无
void xmlFreeNode (xmlNodePtr cur)
功 能:释放一个节点,这是一个递归行为,所有的字节点也将被释放,该函数并没有接触子节点与链表的关联,所以需要先使用xmlUnlinkNode()函数接触关联。
参 数:节点指针
返回值:无
八、新建兄弟节点sibling
xmlNodePtr xmlAddNextSibling (xmlNodePtr cur, xmlNodePtr elem)
功 能:在指定节点的后面添加一个兄弟节点
参 数:cur,指定节点
elem,下一个兄弟节点
返回值:指向新节点的指针或者NULL
九、写入xml文件
int xmlSaveFile (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 short line : line number
unsigned short extra : extra data for XPath/XSLT
}