linux xml2 文档,Linux环境下C使用的XML解析库:libxml2

A. 编译

Libxml包含一个脚本xml2-config,它一般用于编译和链接程序到库时产生标志。

为了取得预处理和编译标志,使用xml2-config –cflags,为了取得链接标志,使用xml2-config –libs。其它有效的参数请使用xml2-config –help查阅。

B. 示例文档

John Fleck

June 2, 2002

example keyword

This is the headline

This is the body text.

C. Keyword例程代码

#include

#include

#include

#include

#include

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(int argc, char **argv) {

char *docname;

if (argc <= 1) {

printf("Usage: %s docname\n", argv[0]);

return(0);

}

docname = argv[1];

parseDoc (docname);

return (1);

}

libxml(三)0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值