文章转自:[https://blog.csdn.net/mq22085/article/details/6043647
常用的libxml2函数归拢了下:
int xmlKeepBlanksDefault(int val) //设置是否保留空白节点,默认为1,最好设置为0。
解析 xmlDocPtr xmlParseFile(const char * filename) // 从磁盘解析一个xml文件
xmlDocPtr xmlParseMemory(const char * buffer, int size) // 从内存中解析一个xml文件
xmlDocPtr xmlReadFile(const char * filename, const char * encoding, int options) // 从磁盘解析一个xml文件,能设置解析的编码和选项
根节点相关函数 xmlNodePtr xmlDocGetRootElement(xmlDocPtr doc) // 获取根节点
xmlNodePtr xmlDocSetRootElement(xmlDocPtr doc, xmlNodePtr root); // 设置文档根节点
节点相关函数 xmlNodePtr xmlNewNode(xmlNsPtr ns, const char * name) // 创建新节点
xmlNodePtr xmlNewTextChild(xmlNodePtr parent, xmlNsPtr ns, const xmlChar * name, const xmlChar * content) // 创建并添加一个子节点
xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) // 添加一个指定节点
xmlNodePtr xmlCopyNode(const xmlNodePtr node, int extended) //复制当前节点
xmlChar * xmlNodeGetContent(xmlNodePtr cur) // 获取节点值,需要使用xmlFree()释放
void xmlNodeSetContent(xmlNodePtr cur, const xmlChar * content) // 设置节点值 属性相关函数
xmlAttrPtr xmlNewProp(xmlNodePtr node, const xmlChar * name, const xmlChar * value) // 创建新属性
xmlChar * xmlGetProp(xmlNodePtr node, const xmlChar * name) // 读取节点属性,需要用xmlFree()释放
xmlAttrPtr xmlSetProp(xmlNodePtr node, const xmlChar * name, const xmlChar * value) // 设置节点属性 保存 int xmlSaveFormatFileEnc(const char * filename, xmlDocPtr cur, const char * encoding, int format) // 保存xml文件到磁盘,format设置为1,与xmlKeepBlanksDefault(0)配合使用,节点之间有缩进
void xmlDocDumpMemoryEnc(xmlDocPtr out_doc, xmlChar ** doc_txt_ptr, int * doc_txt_len, const char * txt_encoding) // 保存xml文件到内存中,将xml文件转换成string或char *时可以利用该函数 移动
cur = node->xmlChildrenNode; //指向node的孩子节点
cur = node->next; //指向node的下一节点
比较 int xmlStrcmp(const xmlChar * str1, const xmlChar * str2) // 比较,可利用while循环和该函数寻找指定节点