# xml2env

## 説明

`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`

## 参照

`ENV`

## 履歴

2005/10/20 初版