- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-07-13T02:44:39+00:00","","")
*ダウンロード先 [#g1b18a11]
#author("2016-07-13T10:31:38+00:00","","")
*TinyXML2を使ってみる [#db6cb9ef]
ダウンロード先
https://github.com/leethomason/tinyxml2/issues/37
***XMLパーサーについて [#n6c87057]
XMLにかかれてあるデータ構造を自分できっちりしっていないと、そのデータにたどり着くことができないので、XMLを読み込んだらなんかいい感じにデータにアクセスできるようになることは「ない」
コツとしては自分の作ったXMLフォーマットのデータを読み込むのを便利にしてくれるダケのものというイメージでいたほうが良い。実際<>で括られたテキストをパースするのはとても面倒なので、それだけでありがたいモノ。それ以上のことを期待してはいけない。
以下、インストールして使うところまで。
*error C2872: 'XMLDocument': あいまいなシンボルです。 [#xa45701d]
#define WIN32_LEAN_AND_MEAN
https://github.com/leethomason/tinyxml2/issues/37
***データへのアクセス[#v3bba5eb]
これで取得できる
XMLElement* root = xml.FirstChildElement( データ名 );
「dir1/data1/」に対してコレはダメ(親ノードをすっ飛ばしてる)
XMLElement* root = xml.FirstChildElement( "data1" );
コレもダメ(パスは繋げない)
XMLElement* root = xml.FirstChildElement( "dir1/data1" );
これはOK
XMLElement* dir1 = xml.FirstChildElement( "dir1" );
これが正しい
XMLElement* data1 = dir1.FirstChildElement( "data1" );
***データの取得 [#k358f118]
基本的に全てテキストで得られる。データがないもの(ディレクトリなど)はNULLが返る
const char* txt = data1->GetText();
***次のデータを得る [#n3bc6ba5]
例のXML
<food>
<fruits>
<data>りんご<data>
</fruits>
<fruits>
<data>めろん<data>
<fruits>
</food>
プログラム
XMLElement* food = xml.FirstChildElement( "food" );
XMLElement* fruits = food->FirstChildElement( "fruits" );
fruits->NextSiblingElement( "fruits" );
gxLib::DebugLog( "%s" , fruits->GetText() );
結果
めろん
こうする。「フルーツ」が自分自身のポインタをつかって次の「フルーツ」を探すイメージ