【问题标题】:What's the best way to store grouped key value pairs in a file?在文件中存储分组键值对的最佳方法是什么?
【发布时间】:2010-11-11 08:34:45
【问题描述】:

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

str1=Hello
str2=World

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

  • 我需要可以按索引访问的字符串列表
  • 我想将键值对分组

我现在考虑使用 XML,因为:

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

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

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

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

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

【问题讨论】:

    标签: .net file-format


    【解决方案1】:

    .NET 对 localization 提供了非常可靠的基于资源的支持,因此您可以研究一下。

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

    【讨论】:

    • 如何在资源中存储列表?单声道有什么问题吗?
    • 不确定列表。为什么要将它们存储在资源文件中?我对 Mono 一无所知。
    • 值应该被编号以用于列表和枚举值名称。
    • 好吧,以 Value1, Value2, ..., ValueN 作为键,您可以随时对它们进行 for-loop 并通过调用 ResourceManager.GetString() 来检索本地化字符串
    • 字符串应该仍然有一个名字。我可能会使用带有字典的类并将其序列化为 XML 或 JSON。
    【解决方案2】:

    CSV file 会很漂亮且紧凑。

    【讨论】:

    • 你将如何进行分组?
    【解决方案3】:

    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

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2020-02-03
      • 2012-10-23
      • 2012-05-04
      相关资源
      最近更新 更多