使用自动字段映射快速读取XML文件并保存到磁盘上的表中

时间:2012-12-20 16:00:29

标签: c# xml datatable

如何使用自动字段映射(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. 第三方解决方案可能是可以接受的
  7. 这种方法是否足够快或是否有更好的方法?

    步骤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字段映射:(如何 - 最好的方法是什么?)

1 个答案:

答案 0 :(得分:1)

如果你有xml文件中的xsd文件,你可能想尝试xsd2code这是一个codeplex项目。 See here。这使得代码中的类基于Xsd格式。

对我来说,这让我很容易创建xml代码而几乎没有问题。当xml方案更改时,您只需更新代码即可生成新类。

非常好而且整洁,但这是个人偏好。