我正在编写一个简单的物理引擎,我希望包含某种形式的配置文件。
当我看到xml时,树结构对我来说很有意义,看看libxml似乎很容易阅读和修改。
我遇到的问题是我可能会如何暗示它。
我的应用程序是用C语言编写的,是否有实现xml配置文件的标准约定?
为了论证,我将建立一个示例环境。假设我有一个名为foo.c的文件,其数据结构如下所示:
typedef struct {
char* name;
float x;
float y;
}info;
和一个名为foo.xml的配置文件,看起来像
<info>
<name>something</name>
<x>0</x>
<y>0</y>
</info>
和另一个类bar.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
}
答案 0 :(得分:1)
如果您只需要配置文件而不一定需要XML,请查看Boost Program Options
简单易用。它使用.ini文件的格式。
.ini文件示例:
[info]
name=something
x=0
y=0
答案 1 :(得分:1)
您可能需要查看libconfig。在您的情况下,这样的配置文件将是:
info {
name = something;
x = 0;
y = 0;
};
Boost库在某些发行版(如Debian)中非常庞大。
答案 2 :(得分:0)
我以相同的方式使用相同的东西,但我使用libmxml库......非常简单