这是有效的YAML吗?

时间:2008-08-19 04:38:51

标签: validation yaml well-formed

因此,对于我在C#question中解析文本,我得到了YAML的指导。我正在推荐这个图书馆的墙,所以这很简单。

heading:
 name: A name
 taco: Yes
 age: 32

heading:
 name: Another name
 taco: No
 age: 27

等等。这有效吗?

8 个答案:

答案 0 :(得分:11)

部分。 YAML支持多个连续“文档”的概念。如果这是你在这里尝试做的,那么是的,它是正确的 - 你有两个文件(或文件片段)。为了使它更明确,你应该用三个短划线将它们分开,如下所示:

---
heading:
 name: A name
 taco: Yes
 age: 32
---
heading:
 name: Another name
 taco: No
 age: 27

另一方面,如果您希望将它们作为同一文档的一部分(以便反序列化它们将导致包含两个元素的列表),您应该像下面这样编写它。使用缩进级别时要格外小心:

- heading:
  name: A name
  taco: Yes
  age: 32
- heading:
  name: Another name
  taco: No
  age: 27

一般来说,YAML简洁且易读/可编辑,但不是真正的人类可写,所以你应该总是使用库来生成它。另外,请注意不同版本的YAML之间存在一些重大变化,如果您使用的是符合不同版本标准的不同语言的库,则会引起您的不满。

答案 1 :(得分:4)

好吧,看来YAML已经消失了。我想要人类可写的可读的东西。另外,这个C#实现......我不知道如果它正在工作,文档包含几个行代码示例。它在他们自己的YAML文件上barfs,并且是一个老学生项目。我发现的唯一一个其他C#YAML解析器使用了我不太习惯使用的MS-PL。

我可能最终会推出自己的格式。最好的做法是该死的,我想要做的就是将一个键与一个值相关联。

答案 2 :(得分:4)

尝试this(Online YAML parser)

您无需下载任何内容或执行某些操作。去那里,复制&糊。就是这样。

答案 3 :(得分:3)

似乎有一个名为Kwalify的YAML验证器可以给你答案。你应该选择String tokenizing,man。编写解析器很有趣:)

答案 4 :(得分:2)

正在开发another YAML library for .NET。现在它支持读取YAML流。它已经在Windows和Mono上进行了测试。目前正在实施写支持。

答案 5 :(得分:2)

CodeProject有一个:

http://www.codeproject.com/KB/recipes/yamlparser.aspx

我没有尝试过太多,但值得一看。

答案 6 :(得分:1)

答案 7 :(得分:0)

只是对它做出明确的评论:你有一个重复的映射键问题。 YAML处理器将此解析为!!映射,禁止重复键。但是,并非所有处理器都强制执行此约束,因此如果将不正确的YAML流传递给处理器,可能会得到错误的结果。