編集メニュー > 新規作成 編集 コピー 名前の変更 凍結 アップロード 添付ファイル一覧 バックアップ

xml

libxml2について

xmlの作り方

ANAROOTでcsvなどを読み込んでXMLの様な構造にするためにはどうしたもんかと調べていたところ、http://xmlsoft.org/examples/ のtree2.cがまさにそれ!

以下の様なプログラムを書くとXMLファイルができる。

 xmlNodePtr node;
 
 xmlDocPtr doc = xmlNewDoc((xmlChar*)"1.0");//1.0 is XML version
 xmlNodePtr rootNode = xmlNewNode(NULL,(xmlChar*)"dataroot");
 xmlDocSetRootElement(doc,rootNode);

 xmlNodePtr Node = xmlNewNode(NULL,(xmlChar*)"NEBULA");

 xmlNewChild(Node,NULL,(xmlChar*)"ID",(xmlChar*)"1");
 xmlAddChild(rootNode,Node);

 xmlNewChild(Node,NULL,(xmlChar*)"geo",(xmlChar*)"32");
 xmlAddChild(rootNode,Node);

 //output for check
 xmlSaveFormatFileEnc("aaa.xml", doc, "UTF-8", 1);
 xmlFreeDoc(doc);
 xmlCleanupParser();
 xmlMemoryDump();

これを実行すると以下の様なaaa.xmlができる。

<?xml version="1.0" encoding="UTF-8"?>
<dataroot>
  <NEBULA>
    <ID>1</ID>
    <geo>32</geo>
  </NEBULA>
</dataroot>

ちなみにMakefileには以下の様に書く。

CXXFLAGS=$(shell root-config --cflags) $(shell xml2-config --cflags )
LDFLAGS=$(shell root-config --glibs) $(shell xml2-config --libs)

ROOTのTXMLNodeを使用するときにはMakefileに

-lXMLParser

を追加する必要あり。automakeでないと顕に書いてあげないとダメなのかな?