这是一个比乔纳森的答案更深入的答案(否则是正确的)。
Yaml 的格式更像 json 而不是 xml。 Yaml 和 json 旨在成为大多数语言中常见的基本但经常使用的数据结构的简单表示(并且在脚本语言中很普遍)。 Xml 被设计为一种标记语言和一种具有大量特性的元规范,以促进不同文档类型的混合。
Yaml 中最基本、最常用的容器是序列和映射。在编程语言中,序列通常被称为列表或数组,而映射通常被称为字典、哈希、哈希图或数组(这很奇怪;我在看你的 PHP)。
所以你的文档相当于yaml/json(两种类型都有效)文档:
{"style": {"name": "Retro"}, "style": {"name": "Nouveau"}, "style": {"name": "Plain"}}
我知道 json 或任何具有 {} 样式映射的语言,很容易看出问题所在。用 ruby 写这个是:
{"style" => ..., "style" => ..., "style" => ...}
最后一个键/值对覆盖了前一个,它们以前是不可能得到的。因此,您需要更改文档格式。
建议一
Jonathan Julians 的建议相当不错:
Retro:
type: style
Nouvaeu:
type: style
Plain:
type: style
建议二
我可能会使用类似的东西:
styles:
Retro:
Nouvaeu:
Plain:
或者,如果上下文暗示了“样式”,则干脆将其完全省略。
建议三
另一个更像 xml 的例子是使用 !!pair
!!pair
- style:
name: Retro
- style:
name: Nouveau
- style:
name: Plain
这或多或少(取决于解析器/语言)等价于数据结构:
[("style", {"name": "Retro"}),
("style", {"name": "Nouveau"}),
("style", {"name": "Plain"})]