Libxml2 環境

Libxml2でコンパイルするにはコンパイルオプションを以下のようにする。

gcc `xml2-config --cflags` srouce.c -o a.out `xml2-config --libs`

この後のエントリで役に立つ例を書く予定。

とりあえず、Libxml2の使い方の例。役に立たないけど、XMLファイルを読み取って、そのままXMLファイルを書き出してみる。

#include <stdio.h>
#include <libxml/tree.h>
#include <libxml/parser.h>

int main(int argc, char **argv)
{
    xmlDocPtr  doc;
    int        ret;
    char      *input_file, *output_file;

    if (argc != 3) {
        return 1;
    }

    input_file  = argv[1];
    output_file = argv[2];

    LIBXML_TEST_VERSION;

    /* Read XML */
    doc = xmlReadFile(input_file, NULL, 0);
    if (doc == NULL) {
        fprintf(stderr, "Failed to parse %s\n", input_file);
        return;
    }

    /* Write XML */
    ret = xmlSaveFormatFile(output_file, doc, 0);
    if (ret < 0) {
        fprintf(stderr, "Failed to save %s\n", output_file);
        return 1;
    }

    /* Free document */
    xmlFreeDoc(doc);

    xmlCleanupParser();

    return 0;
}

内容が同じXMLファイルが出力される。

<?xml version="1.0" encoding="UTF-8"?>
<cars>
  <car>
    <name>motorcycle</name>
    <price>150</price>
  </car>
  <car>
    <name>truck</name>
    <price>500</price>
  </car>
  <car>
    <name>car</name>
    <price>200</price>
  </car>
</cars>

参考

The XML C parser and toolkit of Gnome
やさしいXML 第3版

やさしいXML 第3版

やさしいXML 第3版