1

データベース内のデータを XML ファイル内のデータと比較する必要があるアプリケーションを使用しています。問題は、比較時に、XML ファイル内の欠落要素が空の文字列として扱われ、データベース内のデータと正しく一致しない場合に失敗することです。

アプリケーション自体が XML ファイルを作成するので、それを制御できます。私がやりたいのは、XML ファイル内のすべての要素の既定値を設定して、XML ファイルが後でデータセットに読み込まれるときに、XML ファイル内の欠落している要素が NULL に変換されるようにすることです。

ソース データはデータセットです。データは、別のデータベースの別のテーブルまたはビューから取得できます。この種の問題に対して私が見つけた唯一の解決策は[XmlElement("object1"), DefaultValue(NULL)]、クラスを設定するときにオブジェクトの前に何かを使用することでした。ソース テーブルごとにテーブルの列が異なる場合、データセットに対してこれをどのように達成できますか?

以下は、XML ファイルへのシリアル化を行う現在のコードです。

            TextWriter tw = new StreamWriter(fileNameAndPath);
            XmlSerializer xs = new XmlSerializer(typeof(DataCopy));
            xs.Serialize(tw, DataCopyLog1);

DataCopy のクラス定義は次のとおりです。

public class DataCopy
{
    public DateTime LastCopy { get; set; }
    public DataSet Data { get; set; }

    public DataCopy() 
    {
        Data = new DataSet();
        LastCopy = DateTime.Now;
    }
}
4

1 に答える 1

1

誰もコメントしなかったので、これがどのように解決されたかを残そうと思いました。そうではありませんでした。null を XML に適切に取得し、DataTable にロードされたときに null として読み戻す方法を見つけることができませんでした。空の文字列としてロードされるたびに。

根本的な問題は、代わりに別の方法で攻撃されました。プロジェクトは現在、作業中のテーブルに主キーを必要とするため、新しい行、削除された行などである場合に比較される実際のデータに null はありません。

于 2012-08-09T14:48:19.617 に答える