0

私の問題に対するスマートな解決策について、ここでアドバイスを探しています。

XMLWriter クラスを使用して XML ドキュメントを作成し、ADO.NET DataReader からデータを前方のみの方法で読み取っています。XML ファイルの先頭に、次のような要素が必要です。

<datefrom>2010-07-08</datefrom>
<dateto>2010-07-10</dateto>
<total>335.00</total>

<datefrom>データで見つかった最も古い日付である必要があります。 <dateto>は最新の日付です。 ドキュメントの後半にリストされている<total>すべての要素の合計です。<totalpaid>115.00</totalpaid>

XML 要素をファイルに作成/書き込みすると、以前/最新の日付を追跡でき、すべての<totalpaid>金額を合計して合計を取得できます。

しかし...

DataReader の最後に到達したら、それらの値を XML ファイルの先頭にある要素にどのように取得することをお勧めしますか? 開始タグと終了タグ (つまり、@datefrom、@dateto、@total) の間の値として置換トークンを配置し、それらを何らかの方法で置き換える必要がありますか? それは可能ですか?ファイルを書き込んで閉じ、再度開き、トークンを実際の値に置き換える必要がありますか? XML をファイルに書き込む前に、トークンを値に置き換える方法はありますか? 私は XML ファイルの生成にあまり取り組んでいないので、これを行うための標準的な方法があるかどうかはわかりません。

ありがとう!

4

1 に答える 1

0

XmlWriterは前方のみであるため、ドキュメントの先頭に要素を挿入することはできません。1 つの可能性は、データベースに対して 2 つの SQL クエリを実行することです。最初のクエリはデータを集計し、最初に書き込んだ 3 つの値を返します。次に、2 番目のクエリを実行して残りを書き込みます。この方法では、集計 (最小、最大、合計) がデータベース レベルで行われ、コードでそれらを計算する必要はありません。

これができない場合は、ノードをどこにでも挿入できるXDocumentを使用できますが、ドキュメント全体がメモリ内にあるため、ドキュメントが大きい場合は受け入れられない可能性があります。

于 2010-07-28T07:26:35.650 に答える