对人类可编辑数据文件格式/解析库的建议

时间:2008-09-17 21:11:23

标签: markup

例如,现在我有一个自己动手解决方案,它使用包含以下块的数据文件:

PlayerCharacter Fighter
  Hitpoints 25
  Strength 10
  StartPosition (0, 0, 0)
  Art
    Model BigBuffGuy
    Footprint LargeFootprint
  end
  InventoryItem Sword
  InventoryItem Shield
  InventoryItem HealthPotion
end
  • 人类可编辑(最小垃圾字符,理想情况下)
  • 能够抵御错误(最少'哇我无法解析任何有用的'样式错误,因此我丢失了文件其余部分中的所有数据) - 但仍然能够识别和报告它们,课程。我的例子中唯一完整的失败案例是缺少'end's。
  • 嵌套结构样式数据
  • 数组/列表样式数据
  • 可自定义的基础类型

是否有任何众所周知的解决方案满足/超过这些要求?

6 个答案:

答案 0 :(得分:6)

Yaml是一个很好的解决方案,非常接近你所拥有的。搜索它。

答案 1 :(得分:1)

我提出YAML建议。它非常容易编辑,非常宽容错误并得到广泛支持(特别是在动态语言中)。

答案 2 :(得分:1)

我会说最常见的选择是:

  1. JSONoffical site) - 非常灵活,虽然标点符号可能会让人们习惯于习惯
  2. INI - 超级简单易用,但数据类型有点受限
  3. XML - 非常灵活,常见,但有时候太冗长了

答案 3 :(得分:0)

您可以尝试使用JSON:http://www.json.org/

它最初是为javascript和网络使用而设计的。但它非常干净,并且支持多种语言。

答案 4 :(得分:0)

Lua旨在成为一种编程语言,其语法也可以让您轻松地将其用作标记语言,这样您就可以将数据文件包含在代码中。由于其速度和易用性,许多计算机游戏都将其用于脚本编写,例如“魔兽世界”。然而,它最初是为能源行业设计和维护的,所以有一个严肃的背景。

带有S表达式的Scheme也是一种非常漂亮但看起来不同的数据语法。最后,您已经获得了大多数入门级开发人员都知道的XML。您还可以使用一个很好的开发套件(例如ANTLR)来创建自己定义良好且高效的解析器。

答案 5 :(得分:-1)

我建议JSON

  • 与YAML一样可读/可编辑
  • 如果您碰巧使用Web,那么可以将eval()编入JavaScript对象
  • 可能是YAML的交叉语言