0

共通の基本クラスから継承する 2 つのクラスがあります。

これらの特殊なクラスはそれぞれ、データベースからデータをロードして処理し、その情報をテキスト ファイルに保存します。

最初のクラスは、情報を XML ドキュメントとして表します。2 番目のクラスは、その情報をテキスト ファイルとして格納し、フィールドを区切り文字で区切ります。

私がやりたいことは、両方のクラスで使用できる基本クラスに単一の Save メソッドを記述することです。すべてのクラスがテキスト ファイルに書き込むため、データをメモリに格納するために共通の表現を使用することを考えていました。たとえば、最初のクラスは XmlDocument をその共通の表現に変換します。

これをメモリ、文字列、ストリームに格納する最良の方法は何ですか?

ありがとう

4

3 に答える 3

1

あなたが言及した 2 つの形式の中で XML がより豊富で、操作が比較的簡単であることを考えると、1 つの表現と 2 つの保存メソッドを持たないのはなぜですか?

于 2010-11-17T14:13:38.677 に答える
1

派生クラスがデータをまったく異なる方法で表現している場合は、共通の Save メソッドを実装しないでください。これらのクラスは、データを保存する方法を最もよく知っています。Save() を抽象化し、各サブクラスに保存を実装させます。

Save() の実行には共通点があるかもしれません (実際のファイルを開く、エラー処理など)。Save(System.IO.TextWriter writer);したがって、基本クラスに、それを担当する Save() メソッドを提供させます。このメソッドは、各サブクラスが実装する仮想メソッドを呼び出します。

于 2010-11-17T14:14:41.187 に答える
0

入力データが均一に構造化されている場合は、おそらくそれを にきれいに格納でき、入力でDataSet.ReadXmlDataSetを使用して XML から直接読み込むことができます。 TextReader

区切りテキスト ファイルに出力するレコードのタイプが 1 つしかない場合は、DataTableを直接使用できます。a はDataSet複数の をカプセル化しますDataTable

もう 1 つの方法として、@Welbog で示されているように、XSLT を使用して XML を CSV に直接変換することもできます (ここではカンマ = 区切り記号ですが、必要なものは何でも使用できます)

于 2010-11-17T14:13:20.447 に答える