如何使用自动字段映射(MS Access 或 SQL server 2012)快速读取 XML 文件并保存到磁盘上的强类型表。
想法/想要:
- 使用 c# 4.0 和 .NET 4.0 以及 SQL server 2012 和 MS Access
- 根据从 XML 到表的自动字段映射(字段名称和字段类型)导入 xml 数据。我有 XSD。只需添加新行没有键匹配。
- 可以在需要时覆盖字段和类型映射(尚未决定是硬编码还是使用模板/映射文件,所以我不必重新编译)
- 如果需要,我可以复制字段映射(1 个 xml 字段到多个表字段)
- 代码/设置的低可维护性比导入/转换速度更重要——但如果需要,很高兴知道所有选项
- 第三方解决方案可能是可以接受的
这种方法会足够快还是有更好的方法?
第 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 字段映射:(如何 - 最好的方法是什么?)