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

时间:2010-11-17 14:04:38

标签: c# xml text-files memorystream

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

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

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

我想要做的是在基类中编写一个可供两个类使用的Save方法。由于所有类都将写入文本文件,我正在考虑使用一种通用表示将其数据存储在内存中 - 例如,第一个类将XmlDocument转换为该公共表示。

将这个存储在内存中的最佳方法是什么,字符串,Stream?

由于

3 个答案:

答案 0 :(得分:1)

鉴于XML是您提到的两种格式中更丰富的,并且相对容易操作,为什么不使用单一表示和2种保存方法?

答案 1 :(得分:1)

如果派生类以非常不同的方式表示数据,请不要为它们实现常用的Save方法,这些类最了解如何保存数据。 使Save()成为抽象,让每个子类实现保存。

执行Save()可能有一些共同之处(例如,打开实际文件,错误处理)。所以让你的基类提供一个Save()方法,该方法负责调用每个子类实现的虚拟Save(System.IO.TextWriter writer);方法。

答案 2 :(得分:0)

如果输入数据是统一结构化的,您可以将其干净地存储在DataSet中,也可以使用TextReader输入上的DataSet.ReadXml直接从XML加载。

如果您只有一种类型的记录输出到分隔文本文件,DataTable可以直接使用 - DataSet封装多个DataTable

另一个替代方案可能是使用XSLT直接将XML转换为CSV(这里可以使用逗号=分隔符,你可以使用任何你想要的东西),如@Welbog所示here