【问题标题】:mapping (different)XML(formats) to a database table将(不同)XML(格式)映射到数据库表
【发布时间】:2011-07-13 11:05:57
【问题描述】:

我如何将不同格式的 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,我希望已经很好地叙述了这个问题...

请指教...

【问题讨论】:

    标签: c# asp.net xml xsd mapping


    【解决方案1】:
    1. 您可以识别您正在获取的模式并使用适当的 XSLT 文件将其转换为最新版本。 注意:你应该做一些通用的东西来识别架构(例如)

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

    【讨论】:

      【解决方案2】:

      因为我不知道这应该是多么动态(意味着您将多久更改一次映射)或您有多少不同的 XML,所以我建议您使用您首选的 ORM 将表映射到一个公共类并使用 LinqToXml 创建类实例(这很容易)。每个 XML 结构一个方法或一个类。

      这里有一个 LinqToXml 示例 -> http://www.switchonthecode.com/tutorials/introduction-to-linq-simple-xml-parsing

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-07
        • 2012-05-31
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        相关资源
        最近更新 更多