WindowsでC++からlibxml2を使う
Posted on 5月 22, 2008
Filed Under libxml2, C++, windows |
環境は
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"?>
-
<rss version="2.0">
-
<channel>
-
<copyright>Copyright 2007-2008, ...</copyright>
-
snip..
こんな感じでパースできる
C++:
-
#include <libxml /xmlmemory.h>
-
#include </libxml><libxml /parser.h>
-
-
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;
-
}
めんどくさい
Comments
Leave a Reply