将XML(格式)映射(不同)到数据库表

时间:2011-03-11 12:07:13

标签: c# asp.net xml xsd mapping

如何将不同格式的xml文件映射到我的数据库中的表中,例如我有一个名为Person的表

FirstName nvarchar(50),
LastName nvarchar(50),
Address  nvarchar(500)

我必须将用户提交的xml文件映射到Person的字段,xml文件可以采用不同的格式,例如一个用户以下列格式提交

<Person>

<Names>
<FirstName>john</FirstName>
<LastName>smith</LastName>
</Names>

<Names>
<FirstName>john</FirstName>
<LastName>smith</LastName>
</Names>


</Person>

,另一位用户以下列格式提交

<Person>
<PersonalInfo>

<Names>
<FirstName>john</FirstName>
<LastName>smith</LastName>
</Names>
.
.
.
<PersonalInfo>
</Person>

如何设置一个解决方案来处理不同的情况(不同的xml格式),这样如果用户以任何格式提交xml文件,我只需将格式告诉我的应用程序,其值将自动映射到所说的表...我使用visual studio 2010作为IDE和C#.NET,我希望能够很好地解释这个问题......

请建议......

2 个答案:

答案 0 :(得分:1)

因为我不知道它应该是多么动态(意味着你将改变映射的频率)或者你有多少不同的XML,我建议你使用你喜欢的ORM将表映射到一个公共类并使用LinqToXml创建类实例(这非常简单)。每个XML结构的一个方法或类。

这里有LinqToXml的样本 - &gt; http://www.switchonthecode.com/tutorials/introduction-to-linq-simple-xml-parsing

此外,如果您不想使用它并使用.NET 4,我创建了一个简单的库来从XML字符串生成动态对象。你可以在这看一下 - &gt; https://github.com/tucaz/XmlToObjectParser

答案 1 :(得分:1)

  1. 您可以识别要获取的架构,并使用适当的XSLT文件将其转换为最新版本。 注意:您应该通用一些来识别架构(例如)

  2. (我更喜欢1.更好)创建一个更改映射的软件适配器接口(如加载项工作)