

xml2env は、XML 形式で書かれた ENV ライブラリ用リソースデータを、C のソースファイル形式に変換するためのツールです。
% perl init2env.pl RESOURCE_FILE
[-o OUTPUT_FILE]
RESOURCE_FILE で指定された XML 形式で書かれたリソースデータを C のソースファイル形式へ変換し、RESOURCE_FILE.result.c という名で出力します。
ただし、RESOURCE_FILE には変換したいファイルの絶対パスを入れる必要があります。
-o オプションで、出力ファイル名を RESOURCE_FILE.result.c からOUTPUT_FILE という名に変えます。
※もし XML::Parser が使用できない環境の場合は、cygwin のセットアップで perl の最新版と expat ライブラリを入れる必要があります。
XML 形式での ENV ライブラリ用リソースデータの記述例
変換前の XML 形式のリソースデータ
<envlist>
<resource name="environment1">
<class name="myClass11">
<string name="str1">mario</string>
<hexbinary name="bin1">12345678</hexbinary>
</class>
</resource>
<resource name="environment2">
<class name="myClass21">
<string name="str1">mario</string>
<hexbinary name="bin1">abcd123</hexbinary>
<hexbinary name="bin2" src="../test/test.txt"/>
</class>
<class name="myClass22">
<s32 name="data1">-500</s32>
<u16 name="data2">0x8000</u16>
</class>
</resource>
</envlist>
変換後の C のソースファイル形式のリソースデータ
ENVResource myResource1[] = {
"myClass11.str1", ENV_STRING( "mario" ),
"myClass11.bin1", ENV_BINARY( "\x31\x32\x33\x34\x35\x36\x37\x38" ),
ENV_RESOUCE_END
};
ENVResource myResource2[] = {
"myClass21.str1", ENV_STRING( "mario" ),
"myClass21.bin1", ENV_BINARY( "\x61\x62\x63\x64\x31\x32\x33" ),
"myClass21.bin2", ENV_BINARY( "test.txt ファイルの内容" ),
"myClass22.data1", ENV_S32( -500 ),
"myClass22.data2", ENV_U16( 0x8000 ),
ENV_RESOUCE_END
};
ENVResource* resourceArray[]={ myResource1, myResource2, NULL };
リソースのタイプが BINARY の場合に限り、要素の中にsrcという属性の内容にファイルの相対パスを "" で囲んで指定することにより、自動的にファイルの内容をその要素のデータとすることができます。
生成した C のソースファイルを ENV を使用するプログラムと一緒にコンパイルすることで、そのままリソースデータを使うことができます。
$TwlSDK/tools/bin/xml2env.pl
2005/10/20 初版