代码之家  ›  专栏  ›  技术社区  ›  Andres

在内存中表示文本的最佳方法

  •  0
  • Andres  · 技术社区  · 15 年前

    我有两个继承自公共基类的类。

    这些专用类中的每一个都从数据库中加载一些数据,对其进行处理,然后将这些信息保存在文本文件中。

    第一个类将信息表示为XML文档。 第二个类将其信息存储为文本文件,用分隔符分隔字段。

    我想做的是在基类中编写一个Save方法,这两个类都可以使用。因为所有类都将写入文本文件,所以我想使用一个公共表示来将它们的数据存储在内存中——例如,第一个类将把XmlDocument转换为该公共表示。

    把它存储在内存、字符串、流中的最佳方法是什么?

    谢谢

    3 回复  |  直到 15 年前
        1
  •  1
  •   nos    15 年前

    如果派生类以非常不同的方式表示数据,不要为它们实现一个通用的保存方法,那么这些类最清楚如何保存它们的数据。 使Save()抽象,并让每个子类实现保存。

    执行Save()可能有一些共同点(例如打开实际文件、错误处理)。因此,基类是否提供了Save()方法,该方法负责调用 Save(System.IO.TextWriter writer); 每个子类实现的方法。

        2
  •  1
  •   Mitch Wheat    15 年前

    既然XML是您提到的两种格式中比较丰富的,而且相对容易操作,为什么不使用一个表示和两个保存方法呢?

        3
  •  0
  •   Community Mohan Dere    8 年前

    如果输入数据的结构是统一的,则可以将其干净地存储在 DataSet ,也可以使用 DataSet.ReadXml 在一个 TextReader 输入。

    如果只有一种类型的记录要输出到分隔文本文件, DataTable 可以直接使用-a 数据集 封装多个 DataTable s。

    另一种选择可能是使用XSLT将XML直接转换为CSV(这里是逗号=分隔符,但是您可以使用您想要的任何内容),如图所示 here 作者:@Welbog。