一. 前言
Libxml是一个c语言库,实现了对于XML数据的读,创建和操作的函数。
二. 基本数据类型
1. xmlChar
作为替换c语言的char类型,表示在UTF-8编码的字符串中的一个字节,对于其他编码的数据,必须转换为UTF-8才能使用Libxml函数。
2. xmlDoc
表示一个包含整个xml树元素的结构体,xmlDocPtr用于定义一个指针,指向该结构体。
3. xmlNode
包含单个节点元素的结构体,xmlNodePtr用于定义一个指针,指向 该结构体。
三. 基本函数
1. xmlDocPtr xmlParseFile(const char *filename)
xmlParseFile用于解析一个XML格式的文件。参数是XML文件名,返回值是xmlDocPtr指针,包含整个XML结构的元素。
2. xmlNodePtr xmlDocGetRootElement(xmlDocPtr doc)
用于检索XML树的根节点。参数doc是一个指向整个XML结构的xmlDocPtr指针,返回值是指向根节点的xmlNodePtr指针。
3. xmlChar *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine)
获取某个节点的内容。doc是指向当前XML树的指针,list通常是指向当前节点的子节点,
4. xmlFreeDoc(xmlDocPtr cur)
释放为xml树分配的内存。例如xmlParseFile函数返回的指针指向的内存空间。
5. xmlFree(xmlChar *content)
释放xmlChar*指向的内存空间,例如释放xmlNodeListGetString函数返回的xmlChar*指针指向的空间。
6. int xmlStrcmp(const xmlChar *str1, const xmlChar *str2)
比较两个字符串是否相同。用法同c语言库函数strcmp。
7. xmlSaveFormatFile(const char *filename, xmlDocPtr cur, int format)
将内存中的xml树结构格式化输出到文件中。filename是输出的文件名,cur是xml树结构,format是否格式化输出,format=0表示xml在文件中保存为单行并没有空格。format=1表示xml以缩进换行的格式输出,但是必须同时调用xmlKeepBlanksDefault(0)。
8. xmlNewTextChild(xmlNodePtr parent, xmlNsPtr ns, const xmlChar *name, const xmlChar *content)
新建一个子节点。parent表示父节点,ns设置为NULL,name表示节点名,content表示节点的内容。
9. xmlDocPtr xmlNewDoc(const xmlChar *version)
新建一个xml树文档结构。version表示xml的版本,返回xmlDocPtr指针。
10. xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns, const xmlChar *name, const xmlChar *content)
在xml文档结构下新建一个节点。doc是文档树指针,ns为NULL,name表示节点名称,content表示节点内容。
11. xmlNodePtr xmlDocSetRootElement(xmlDocPtr doc, xmlNodePtr root)
将root节点设置为根节点。doc为该文档指针。
四. 总结
本文介绍了libxml基本的数据结构和函数,了解了怎么操作xml文件