将分组键值对存储在文件中的最佳方法是什么?

时间:2009-07-16 12:36:09

标签: .net file-format

目前我只有一个这样的文件,我手动解析为一个字典:

str1=Hello
str2=World

由于以下几个原因,这已不再实用:

  • 我需要能够通过索引访问的字符串列表
  • 我想将键值对分成组

我认为现在使用XML是因为:

  • 适用于键值对和组
  • 我可以使用类并序列化它们,消除拼写错误

但是(假设我使用序列化类):

  • 我必须创建许多新类来映射文档结构
  • 字典需要特别照顾,因为通常不能序列化

你推荐这种方法吗?我应该使用XmlDocument类吗?是否有其他格式具有.net的免费库?

我想用它来本地化一个应用程序。

3 个答案:

答案 0 :(得分:5)

.NET为localization提供了非常可靠的基于资源的支持,所以你可以研究一下。

如果您真的想要发明自己的资源存储格式,我建议您更仔细地查看JSON作为序列化格式(有大量的.NET库来处理它)或YAML(不是确定是否有合适的.NET解析器):它们都更简单(如果这就是你所追求的)。

答案 1 :(得分:0)

CSV file会很好而紧凑。

答案 2 :(得分:0)

<强>的XmlDocument

除非绝对需要,否则不要使用XmlDocument。它被优化用于构建xml而不是读取它。 http://www.mattberther.com/2004/06/16/xmldocument-vs-xpathnavigator/ 使用XmlReader或XPathNavigator。如果您正在阅读类,请考虑使用XMLSerializer进行直接序列化。

Xml与平面文件

如果要创建对象层次结构,则仅使用XML。根据您的描述,逐行读取文本文件就足够了。然后,您可以在第一次出现的“=”时拆分并将其读入字典,列表或某些自定义结构。它比XML更快,更易于维护。

<强>拼写

我认为XML不会帮助您解决拼写错误。

<强>本地化

应该使用资源文件 看看这里http://www.codeproject.com/KB/dotnet/Localization.aspx 或者在SO https://stackoverflow.com/questions/tagged/localization+.net