Я пишу простой физический движок и хочу включить некоторые конфигурационные файлы.
Когда я смотрю на 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, который читает файлы xml в деревья, используя libxml2. Как люди обычно заполняют такую структуру данных?
Я не прошу альтернативы 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
}