我正在寻找将简单数据结构外部化为人类可读文件的最佳实践。
我对iOS的plist功能有一些经验(我认为它是类似XML的内容),我想找到类似的东西。
在.NET方面.resx似乎是要走的路,但正如我所研究的那样,每个人都会带来本地化,而这些数据并不意味着本地化。 .resx仍然是答案吗?
如果是这样,有没有办法获得所有.resx数据的字典结构而不是读取单个条目?我想知道诸如条目数,所有键的数组,所有值的数组等等。
答案 0 :(得分:2)
XML(任何格式,不仅仅是resx)或CSV都是常见的选择。只要XML是有效的XML,XML就更容易在代码中使用。
查看LINQ to XML(http://msdn.microsoft.com/en-us/library/bb387098.aspx)以开始阅读XML。
答案 1 :(得分:2)
鉴于我的druthers,我会避免使用XML。它的设计易于解析。它很冗长,它不是人类可读性的设计。如果可以,请避免使用角括号税。
有JSON。这是一个有用的选择。简单易读,易于解析。没有角括号税。这是一个选择。 YAML是另一个(它是JSON的超集)。
有LISP风格S-expressions(另见wikipedia)。您还可以使用Prolog风格的术语来构建您选择的数据结构(也很容易解析)。
还有老派的DOS / Windows INI files。有多种工具可用于纠缠它们,包括.Net / CLR实现。
您可以与OS X合作Apple's pList format。您可以使用其old-school "ASCII" (text) representation或其XML representation。
您也可以(首选,恕我直言)编写自定义/“小”语言,以满足您的需求。最近的流行语 du jour ,这些是“特定于域的语言”。我会避免使用Visual Studio / C#/。Net域特定的语言工具,因为你得到的将是基于XML的。
Terrance Parr的优秀ANTLR可以说是语言建设的首选工具。它是用Java编写的,带有一个用于处理语法和解析树的IDE,可以定位多种语言(Java,C#,Python,Objective-C,C / C ++都是最新的。对Scala有一些支持对于旧版本,存在一些其他目标语言,具有不同的完整性。)
Terrance Parr的书同样出色: