因此,对于我在 C# question中的文本解析,我直接针对 YAML。我被推荐的这个图书馆碰壁了,所以这是一个快速的。
heading:
name: A name
taco: Yes
age: 32
heading:
name: Another name
taco: No
age: 27
等等。那有效吗?
因此,对于我在 C# question中的文本解析,我直接针对 YAML。我被推荐的这个图书馆碰壁了,所以这是一个快速的。
heading:
name: A name
taco: Yes
age: 32
heading:
name: Another name
taco: No
age: 27
等等。那有效吗?
部分。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 已经消失了。我想要一些人类可写和可读的东西。另外,这个 C# 实现......我不知道它是否工作,文档由几个单行代码示例组成。它在他们自己的 YAML 文件上产生问题,并且是一个旧的学生项目。我发现的唯一其他 C# YAML 解析器使用我不太习惯使用的 MS-PL。
我可能最终会推出自己的格式。该死的最佳实践,我想做的就是将键与值相关联。
您不必下载任何东西或做某事。只要去那里,复制和粘贴。而已。
似乎有一个名为Kwalify的 YAML 验证器应该会给你答案。你应该使用字符串标记,伙计。编写解析器很有趣:)
还有另一个用于 .NET 的 YAML 库正在开发中。现在它支持读取 YAML 流。它已经在 Windows 和 Mono 上进行了测试。目前正在实施写入支持。
您可以在在线 yaml 解析器中看到输出:
如您所见,只创建了一个标题节点。
只是要对此发表明确的评论:您有重复的映射键问题。YAML 处理器会将其解析为 !!map,它禁止重复键。但是,并非所有处理器都强制执行此约束,因此如果您将不正确的 YAML 流传递给处理器,您可能会得到不正确的结果。