last-modified: 2019-04-28 (日) 18:36:58 (1834d)[変更箇所]
libxml2について
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でないと顕に書いてあげないとダメなのかな?