使用C脚本读取YAML文件

时间:2009-11-10 16:25:27

标签: c yaml

我想使用简单的C程序读取一个瘦的YAML文件。我认为最好的方法是使用以下库:Pyyaml.org。

在阅读维基页面后,我尝试在此处使用一些示例: http://pyyaml.org/browser/libyaml/branches/stable/tests/ 但对于像我这样的菜鸟来说,理解起来并不是很简单。

例如,如果我得到这个更简单的YAML文件(名为 test.yml ):

test:
  - {conf: hi}
  - {conf: test}
  - {conf: abc}

我该如何做这样的事情:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
  /* I do not really see how to load the file here... */

  char *conf[3] = {"hi", "test", "abc"}; /* configuration of the YAML file */

  int i;
  for (i = 0; i < 3; i++)
  {
    printf("content: %s\n", conf[i]);
  }

  return 0;
}

...但是来自给定的YAML文件?

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

second answer to this question有一个更好的例子,可以使用该库将yaml文件解析成更有用的东西。

答案 1 :(得分:1)

libyaml似乎是基于事件的,这通常意味着它针对速度进行了调整,而不是为了便于使用。并且没有太多的例子(至少对于原始的C代码,脚本语言绑定更受欢迎)。源代码分发在tests目录中有一些示例代码。最全面的似乎是deconstructor example。它很长,但评论很好,所以很容易理解。

一般来说,我不确定YAML对C代码有多大用处。 YAML最大的优势在于它可以自然地映射到Python和Perl等脚本语言使用的数据类型 - 列表和字典,嵌套到任意级别。将这种嵌套结构简单地序列化为YAML的能力使其具有吸引力。我很好奇你为什么需要YAML代码。