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

由于没有人发表评论,我想我会留下如何解决这个问题:事实并非如此。我找不到将空值正确放入 XML 并在加载到 DataTable 时作为空值读回的方法;每次它都会作为空字符串加载。

相反,潜在的问题以不同的方式受到攻击。该项目现在需要它正在使用的表上的主键,因此如果它是新行、已删除行等,则在比较的实际数据中没有空值。

于 2012-08-09T14:48:19.617 回答