因此,对于我在C#question中解析文本,我得到了YAML的指导。我正在推荐这个图书馆的墙,所以这很简单。
heading:
name: A name
taco: Yes
age: 32
heading:
name: Another name
taco: No
age: 27
等等。这有效吗?
答案 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)
您无需下载任何内容或执行某些操作。去那里,复制&糊。就是这样。
答案 3 :(得分:3)
似乎有一个名为Kwalify的YAML验证器可以给你答案。你应该选择String tokenizing,man。编写解析器很有趣:)
答案 4 :(得分:2)
正在开发another YAML library for .NET。现在它支持读取YAML流。它已经在Windows和Mono上进行了测试。目前正在实施写支持。
答案 5 :(得分:2)
答案 6 :(得分:1)
您可以在在线yaml解析器中看到输出:
如您所见,只创建了一个标题节点。
答案 7 :(得分:0)
只是对它做出明确的评论:你有一个重复的映射键问题。 YAML处理器将此解析为!!映射,禁止重复键。但是,并非所有处理器都强制执行此约束,因此如果将不正确的YAML流传递给处理器,可能会得到错误的结果。