maaash.jp

what I create

WindowsでC++からlibxml2を使う

環境は
VisualC++2005ExpressEdition

http://www.zlatkovic.com/pub/libxml/
こちらからWindows用バイナリをDL
今のバージョンは libxml2-2.6.32+.win32.zip

C/C++ 追加のインクルードディレクトリに libxml2/include を追加
リンカ 追加のライブラリディレクトリに libxml2/lib を追加

こんなRSSを
[xml]
< ?xml version=“1.0” encoding=“UTF-8”?>


Copyright 2007-2008, …
snip..
[/xml]

こんな感じでパースできる
[cpp]

include #include

int XMLParser::parse( string filename ) {

xmlDocPtr doc = xmlParseFile( filename.c_str() );
if (doc == NULL ) {
fprintf(stderr,”Document not parsed successfully. \n”);
return 0;
}

xmlNodePtr cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr,”empty document\n”);
xmlFreeDoc(doc);
return 0;
}

if (xmlStrcmp(cur->name, (const xmlChar *) “rss”)) {
fprintf(stderr,”document of the wrong type, root node != rss”);
xmlFreeDoc(doc);
return 0;
}

xmlChar *version = xmlGetProp(cur, (const xmlChar *)”version”);
printf(“version: %s\n”, version); // “2.0″
xmlFree(version);

xmlFreeDoc(doc);
return 1;
}
[/cpp]

めんどくさい

Comments