4

因此,对于我在 C# question中的文本解析,我直接针对 YAML。我被推荐的这个图书馆碰壁了,所以这是一个快速的。

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

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

等等。那有效吗?

4

8 回答 8

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 之间存在一些重大更改,如果您使用符合不同版本标准的不同语言的库,这可能会咬到您。

于 2008-08-19T04:52:38.520 回答
4

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

我可能最终会推出自己的格式。该死的最佳实践,我想做的就是将键与值相关联。

于 2008-08-19T05:11:34.067 回答
4

试试这个(在线 YAML 解析器)

您不必下载任何东西或做某事。只要去那里,复制和粘贴。而已。

于 2011-02-23T22:40:27.060 回答
3

似乎有一个名为Kwalify的 YAML 验证器应该会给你答案。你应该使用字符串标记,伙计。编写解析器很有趣:)

于 2008-08-19T04:51:05.000 回答
2

还有另一个用于 .NET 的 YAML 库正在开发中。现在它支持读取 YAML 流。它已经在 Windows 和 Mono 上进行了测试。目前正在实施写入支持。

于 2008-08-26T23:37:37.730 回答
2

CodeProject 有一个:

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

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

于 2008-12-12T00:47:21.307 回答
1

您可以在在线 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

如您所见,只创建了一个标题节点。

于 2009-08-19T09:51:08.407 回答
0

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

于 2013-09-24T12:36:37.087 回答