使用xml配置文件 - 简单的映射方法?

时间:2011-09-14 04:45:57

标签: c xml config

我正在编写一个简单的物理引擎,我希望包含某种形式的配置文件。

当我看到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
}

3 个答案:

答案 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库......非常简单