我正在尝试在 linux 服务器上使用 C 解析 YAML 文件(这是对现有应用程序的修改,因此不能选择更改语言)。
我已经通读了http://wpsoftware.net/andrew/pages/libyaml.html和 libyaml wiki 上的教程。
我想要做的是将这个应用程序的数据库配置从头文件中移到 YAML 中,以便我可以将编译和配置作为单独的步骤,允许我使用 Chef 来管理配置。
这是yaml:
---
db_server: "localhost"
db_password: "wibble"
db_username: "test"
national_rail_username: test
national_rail_password: wibble
Run Code Online (Sandbox Code Playgroud)
我想要做的是遍历文件并根据键名设置变量。
伪代码如下:
config = YAML::load("file.yaml")
DBUSER = config['db_username']
DBPASS = config['db_password']
DBSERVER = config['db_server']
NATIONAL_RAIL_USERNAME = config['national_rail_username']
NATIONAL_RAIL_PASSWORD = config['national_rail_password']
Run Code Online (Sandbox Code Playgroud)
(如果上面看起来有点像 ruby/python,那是因为我习惯使用那些语言!)
我设法使用 YAML-cpp 进行了测试设置,然后我意识到我已经在错误的树上吠叫了三个小时,因为主要应用程序是用 C 编写的,而不是 C++。
编辑:这是我到目前为止的代码。它是从上面的教程网站剪切和粘贴的,但是我认为这不是正确的方法,并且它似乎没有为我提供一种将 YAML“键”分配给 C 代码中的变量的方法。
#include <stdio.h>
#include <yaml.h>
int main(void)
{
FILE *fh = fopen("config.yaml", "r");
yaml_parser_t parser;
yaml_token_t token; /* …Run Code Online (Sandbox Code Playgroud)