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

* xml [#y2ca296e]
libxml2について

** xmlの作り方 [#a2720416]
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でないと顕に書いてあげないとダメなのかな?