Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个易于导入的XML文件,其中我有一个XSD,可以使用C#或SQL将其导入SQL数据库?_C#_Sql Server_Xml_Xsd - Fatal编程技术网

是否有一个易于导入的XML文件,其中我有一个XSD,可以使用C#或SQL将其导入SQL数据库?

是否有一个易于导入的XML文件,其中我有一个XSD,可以使用C#或SQL将其导入SQL数据库?,c#,sql-server,xml,xsd,C#,Sql Server,Xml,Xsd,我做了一些尝试,首先我使用xsd.exe生成了类,并编写了3行代码将xml导入C#中的内存。然而,XML非常复杂,并且有相当多的不同类型 然后,我使用xsd2db创建了一个与.xsd定义匹配的数据库 我正在寻找一种将XML导入数据库的简单方法,可以直接从对象中使用实体框架或类似工具,也可以通过某种XML导入 我尝试使用SQL的导入数据功能(可能可以自动实现),但它不支持XML,只支持.CSV或.TXT 如果您能为我指出正确的方向,我将不胜感激,即使您没有直接的答案。有不同的方法来完成将数据从XM

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

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

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

我尝试使用SQL的导入数据功能(可能可以自动实现),但它不支持XML,只支持.CSV或.TXT


如果您能为我指出正确的方向,我将不胜感激,即使您没有直接的答案。

有不同的方法来完成将数据从XML文件导入SQL Server表的任务

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


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

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


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

我一直使用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; } 
}
公立学校
{
[XmlAttribute]//XML序列化程序属性
[MaxLength(30)]//CodeFirst数据注释
公共字符串名称{get;set;}
[XmlArray]
公共列表学生{get;set;}
}

然而,一开始需要花费一些时间,因为您需要适当地修饰类以匹配SQL Server中的XML和表。

这不是SQLXMLBulkload应该做的吗?很可能,我只是一名c#开发人员,一直使用最简单意义上的SQL,我没有导入数据的经验。