libxml2でhello, world

ここを参考にXmlTextReaderでhello, world。

環境はUbuntu12.04。
libxml2をインストール。

$ sudo apt-get update;sudo apt-get install libxml2-dev

hello.cを作成。
[hello.c]

#include 

static void processNode(xmlTextReaderPtr reader) {
xmlChar *name, *value;

name = xmlTextReaderName(reader);
if (name == NULL)
name = xmlStrdup(BAD_CAST "--");
value = xmlTextReaderValue(reader);

printf("%d %d %s %d",
xmlTextReaderDepth(reader),
xmlTextReaderNodeType(reader),
name,
xmlTextReaderIsEmptyElement(reader));
xmlFree(name);
if (value == NULL)
printf("\n");
else {
printf(" %s\n", value);
xmlFree(value);
}
}
int main() {
char *filename = "hello.xml";
xmlTextReaderPtr reader;
int ret;

reader = xmlNewTextReaderFilename(filename);
if (reader != NULL) {
ret = xmlTextReaderRead(reader);
while (ret == 1) {
processNode(reader);
ret = xmlTextReaderRead(reader);
}
xmlFreeTextReader(reader);
if (ret != 0) {
printf("%s : failed to parse\n", filename);
}
} else {
printf("Unable to open %s\n", filename);
}
return 0;
}

ビルド。

$ gcc hello.c -o hello -I/usr/include/libxml2 -lxml2

hello.xmlを用意。
[hello.xml]

<?xml version="1.0" encoding="UTF-8"?>
hello, world

実行。

$ ./hello

0 1 message 0
1 3 #text 0 hello, world
0 15 message 0