データベース内のデータを 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;
}
}