这是有效的YAML吗?

时间:2020-03-05 18:40:37  来源:igfitidea点击:

因此,对于在Cquestion中进行文本解析,我直接针对YAML。我被建议使用的这个库碰壁了,所以这是一个快捷工具。

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

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

等等。那有效吗?

解决方案

回答

似乎有一个名为Kwalify的YAML验证程序,可以为我们提供答案。伙计,我们应该只使用String标记。编写解析器很有趣:)

回答

部分地。 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之间存在一些重大更改,如果我们使用的语言符合标准的不同版本,则可能会给我们带来麻烦。

回答

好吧,看来YAML然后离开了窗口。我想要人类可写和可读的东西。另外,此实现...我不知道它是否有效,文档包含一些行代码示例。它在自己的YAML文件上进行倒写,并且是一个老学生项目。我找到的唯一其他CYAML解析器使用的MS-PL我不太满意。

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

回答

.NET的另一个YAML库正在开发中。目前,它支持读取YAML流。它已经在Windows和Mono上进行了测试。当前正在执行写支持。

回答

CodeProject在以下位置提供一个:

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

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

回答

我们可以在在线yaml解析器中看到输出:

http://yaml-online-parser.appspot.com/?yaml=heading%3A%0D%0A+name%3A+A+name%0D%0A+taco%3A+Yes%0D%0A+age%3A + 32%0D%0A%0D%0Aheading%3A%0D%0A + name%3A +另一个+ name%0D%0A + taco%3A + No%0D%0A + age%3A + 27%0D%0A&type = json

如我们所见,仅创建了一个标题节点。