1

如何使用自动字段映射(MS Access 或 SQL server 2012)快速读取 XML 文件并保存到磁盘上的强类型表。

想法/想要:

  1. 使用 c# 4.0 和 .NET 4.0 以及 SQL server 2012 和 MS Access
  2. 根据从 XML 到表的自动字段映射(字段名称和字段类型)导入 xml 数据。我有 XSD。只需添加新行没有键匹配。
  3. 可以在需要时覆盖字段和类型映射(尚未决定是硬编码还是使用模板/映射文件,所以我不必重新编译)
  4. 如果需要,我可以复制字段映射(1 个 xml 字段到多个表字段)
  5. 代码/设置的低可维护性比导入/转换速度更重要——但如果需要,很高兴知道所有选项
  6. 第三方解决方案可能是可以接受的

这种方法会足够快还是有更好的方法?

第 1 步:将 xml 读入一个类(c# 类是从 XSD.exe 工具自动生成的)

ser = new XmlSerializer(typeof(MyTypeData));
MyTypeData data;
using (XmlReader reader = XmlReader.Create(XMLFullPath))
{
  data = (MyTypeData)ser.Deserialize(reader);
}

第 2 步:以某种方式使用泛型将类保存到强类型 DataSet DataTable(内存表)(如下面的方法)

public static DataTable CreateEmptyDataTable(MyTypeData data)
// Creates empty DataTable
{
    DataTable dt = new DataTable();

    foreach (PropertyInfo info in data.GetProperties())
    {
        dt.Columns.Add(new DataColumn(info.Name, info.PropertyType));   
    }

    return dt;
}

第 3 步:在磁盘上填充表,其中 DataTable 字段名称与字段类型相同的 XML 名称相同。跳过不在表中的 xml 元素名称。只需添加新行,暂时不用担心键匹配。以后可以添加基于键匹配的更新行。

第 4 步:将自定义源添加到 dest 字段映射:(如何 - 最好的方法是什么?)

4

1 回答 1

1

如果您有来自 xml 文件的 xsd 文件,您可能想尝试 xsd2code,它是一个 codeplex 项目。见这里。这使得代码中的类基于 Xsd 格式。

对我来说,这让我可以非常轻松地创建 xml 代码,而且问题很少。当 xml 方案更改时,您只需更新代码即可生成新类。

非常漂亮和整洁,不过,这当然是个人喜好。

于 2012-12-20T16:19:40.730 回答