C语言 使用xml配置文件-简单的映射方法



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

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

如果您只需要配置文件而不一定需要XML,请查看Boost程序选项

它简单易用。它使用。ini文件的格式。

.ini文件示例:

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

您可能想看看libconfig。在您的情况下,这样的配置文件将是:

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

Boost库在某些发行版(如Debian)中相当大。

我使用相同的东西在相同的方式,但我使用libmxml库…非常简单

最新更新