xml学习
一,数据类型xmlChar
对char的基本代替,是一个UTF-8编码字符串中的一个字节。如果你的数据使用了其他编码,在使用libxml函数前就必须转换为UTF-8。xmlDoc和xmlDocPtr
是一个包含了从解析文档后创建出的树的结构。xmlDocPtr是指向该结构的指针。xmlNode和xmlNodePtr
包含单个节点的结构。xmlNodePtr是指向该结构的指针,它用来遍历文档树。。。。。 二,常用函数xmlDocPtr xmlParseFile(char *filename) // 解析文件char *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) //获取具体内容 xmlStrcmp(const CHAR *str1, const CHAR *str2)。。。。 三,实例
对char的基本代替,是一个UTF-8编码字符串中的一个字节。如果你的数据使用了其他编码,在使用libxml函数前就必须转换为UTF-8。xmlDoc和xmlDocPtr
是一个包含了从解析文档后创建出的树的结构。xmlDocPtr是指向该结构的指针。xmlNode和xmlNodePtr
包含单个节点的结构。xmlNodePtr是指向该结构的指针,它用来遍历文档树。。。。。 二,常用函数xmlDocPtr xmlParseFile(char *filename) // 解析文件char *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) //获取具体内容 xmlStrcmp(const CHAR *str1, const CHAR *str2)。。。。 三,实例
1 { 2 xmlDocPtr doc; 3 xmlChar *value; 4 doc = xmlParseFile(filename); 5 if (NULL == doc) { 6 printf( "[GUI]XML Document '%s' parse error.\n", filename); 7 return -1; 8 } 9 10 xmlNodePtr root = doc->root; 11 if (root == NULL) { 12 printf( "[GUI]XML Document empty\n"); 13 xmlFreeDoc(doc); 14 return -1; 15 } 16 if(doc->encoding) { 17 value = (xmlChar *)doc->encoding; 18 if(0 == xmlStrcmp((const CHAR *)"utf8", (const CHAR *)value)) { 19 printf("[GUI] xml encoding utf8"); 20 } 21 } 22 23 xmlNodePtr cur = root->xmlChildrenNode; 24 while (cur) { 25 if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) { 26 key = xmlNodeListGetString(cur->doc, cur->xmlChildrenNode, 1); 27 printf("keyword: %s\n", key); 28 xmlFree(key); 29 } 30 cur = cur->next; 31 } 32 return; 33 34 }