2011-09-14 10 views
3

私は単純な物理エンジンを作成しています。設定ファイルのいくつかの形式を含める必要があります。xml設定ファイルの使用 - 簡単なマッピング方法?

xmlを見ると、ツリー構造は私には大変意味があります。また、libxmlを見ると読みやすく、変更するのが簡単なようです。

私が抱えている問題は、どのように私がそれを意味するかということです。

私のアプリケーションはC言語で書かれていますが、xml設定ファイルを実装するための標準的な規則はありますか?

議論のために、私は環境例を設定します。

typedef struct { 
    char* name; 
    float x; 
    float y; 
}info; 

<info> 
    <name>something</name> 
    <x>0</x> 
    <y>0</y> 
</info> 

と別のクラスbar.cにのように見えるfoo.xmlと呼ばれる設定ファイル:私はこのようになりますデータ構造とのfoo.cというファイルを持っているとしましょうlibxml2を使用してxmlファイルをツリーに読み込みます。どのように人々は通常、そのようなデータ構造にデータを埋め込みますか?

(これは実装するための正しい方法であれば、私はについて考えたが確認していないしてきた何か)私は

例の解答XMLに代わるものを頼むありませんよ。

bar.cには機能があります。

tree* load_config(FILE* config_file); 
char[][] get_fields(tree* current_tree); 

あなたは、その関数を呼び出して、それがツリーを返し、その後、あなたは次のように条件文の束を持っている:あなただけの設定ファイルを必要とする場合

tree* current_tree = load_config(fopen("foo.xml")); 
char[][] fields = get_fields(current_tree); 

if(contains(fields, "name")) { 
    name = current_tree->name; //i'd have to navigate through the tree to find name or something 
} 

答えて

1

必ずしもXMLである必要はありません。Boost Program Options

シンプルで使いやすいです。 .iniファイルの形式を使用します。あなたはlibconfigを見てみることをお勧めします

[info] 
name=something 
x=0 
y=0 
+0

私は代替案を求めていませんでした... – Newbie

+1

しかし、それは良いかもしれません。 XMLは非常に複雑ではありませんが、あなたが必要と思うよりも解析や処理に少し重いです。 –

0

私は同じ方法で同じものを使用しますが、私はlibmxmlライブラリを使用して...その非常にシンプル

1

:.iniファイルの

例。あなたのケースでは、そのような設定ファイルは次のようになります。

info { 
    name = something; 
    x = 0; 
    y = 0; 
}; 

Boostライブラリは(Debianのような)いくつかのディストリビューションでは非常に大きいです。

関連する問題