story.xml
<?xml version="1.0"?>
<story>
<storyinfo>
<author>John Fleck</author>
<datewritten>June 2, 2002</datewritten>
<keyword>example keyword</keyword>
</storyinfo>
<body>
<headline>This is the headline</headline>
<para>This is the body text.</para>
</body>
</story>
keyword.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
void parseStory(xmlDocPtr doc,xmlNodePtr cur){
xmlChar *key;
cur = cur->xmlChildrenNode;
while(cur!=NULL){
if((!xmlStrcmp(cur->name,(const xmlChar *)"keyword"))){
key = xmlNodeListGetString(doc,cur->xmlChildrenNode,1);
printf("keyword : %s\n",key);
xmlFree(key);
}
cur = cur->next;
}
return;
}
static void parseDoc(char *docname){
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if(doc == NULL){
fprintf(stderr,"Document not parsed successfully \n");
return;
}
cur = xmlDocGetRootElement(doc);
if(cur==NULL){
fprintf(stderr,"empty document\n");
xmlFreeDoc(doc);
return;
}
if(xmlStrcmp(cur->name,(const xmlChar *)"story")){
fprintf(stderr,"document of the wrong type,root node!=story");
xmlFreeDoc(doc);
return;
}
cur=cur->xmlChildrenNode;
while(cur!=NULL){
if(!xmlStrcmp(cur->name,(const xmlChar *)"storyinfo")){
parseStory(doc,cur);
}
cur = cur->next;
}
xmlFreeDoc(doc);
return;
}
int main (){
char *docname = "story.xml";
parseDoc(docname);
return 0;
}
c 解析xml 使用libxml2
最新推荐文章于 2022-08-31 10:51:55 发布