あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

libxmlを使用したXMLプログラミング

  • libxmlは、C言語で作成されたXMLを扱うライブラリです。C言語、その他の言語から使用できます。
#include <string.h>
#include <libxml/tree.h>   
#include <libxml/parser.h>  
#include <libxml/xmlmemory.h>

  ...
 
 char* path = xmlfilename;
  // (圧縮)XMLファイルをパースする。
  xmlDocPtr doc = xmlParseFile(path);
  // ルートの要素
  xmlNodePtr node = doc->xmlRootNode;
  // 要素の属性
  xmlAttrPtr prop = node->properties;
  // 要素の子要素
  xmlNodePtr item_node = node->xmlChildrenNode;
  // 要素名が"text"の場合に要素の値を取得
  if( strcmp(item_node->name, "text") == 0 ){
    pdata = xmlNodeGetContent (node);
    if( pdata != NULL ){
      // パース時の処理
    }
  }
  if( strcmp(node->name, "test") == 0 ){
     // パース時の処理
  }
  // 要素属性の値を取得
  attrStr = xmlGetProp(node, prop->name);

  if (xmlSaveFile (path, doc) == -1) {
    // 保存に失敗
  } else {
    // 保存に成功
  }

  // ドキュメントの開放
  xmlFreeDoc (doc);

 ...