1

我尝试了一些事情,首先我使用生成的类xsd.exe并编写了快速的 3 行代码以将 xml 导入 C# 中的内存。然而,XML 非常复杂,并且有大量不同的类型。

然后我使用 xsd2db 创建了一个与 .xsd 定义匹配的数据库。

我正在寻找一种将 XML 导入数据库的简单方法,或者直接使用实体框架或类似的对象,或者通过某种 XML 导入。

我尝试使用 SQL 的 Import Data 功能(大概可以自动化),但它不支持 XML,仅支持 .CSV 或 .TXT

即使您没有直接的答案,任何将我指向正确方向的东西都将不胜感激。

4

3 回答 3

2

有多种方法可以完成将数据从 XML 文件导入 SQL Server 表的任务。

使用 OPENROWSET 函数将 XML 数据从 XML 文件导入 SQL Server 表 使用 OPENXML 函数解析 XML 数据

http://www.mssqltips.com/sqlservertip/2899/importing-and-processing-data-from-xml-files-into-sql-server-tables/

于 2013-08-21T13:51:08.813 回答
1

没有“简单的方法”——这在很大程度上取决于 XSD 和 XML 的样子。

问题在于,给定一个复杂的 XML 结构,不一定有一组明显的对应 SQL 表与之匹配:关系可能是隐藏的或不明显的,数据类型不完全匹配等。因此自动工具可能(并且将会)失败经常。

恐怕最好的方法是查看那些 XSD / XML 并手动创建目标数据库结构和传输代码。

于 2013-08-21T13:55:32.923 回答
0

我一直将 XmlReader 与 EntityFramework CodeFirst 一起使用。

简单地创建用于从 xml 反序列化的类(使用或不使用 xsd),然后用 xml 属性和 EF 属性装饰它们。像那样:

public class School 
{
    [XmlAttribute] //XML Serializer attribute
    [MaxLength(30)] // CodeFirst Data Annotations
    public string Name { get; set;}
    [XmlArray]
    public List<string> Students { get; set; } 
}

但是,它首先会花费您一些时间,因为您需要正确地装饰类以匹配 SQL Server 中的 XML 和表。

于 2013-08-21T13:58:00.340 回答