отображение (разных) XML (форматов) на таблицу базы данных - PullRequest
0 голосов
/ 11 марта 2011

как я могу сопоставить 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 ]

1 голос
/ 08 февраля 2012
  1. вы можете идентифицировать приобретаемую схему и использовать соответствующий XSLT-файл для преобразования его в последнюю версию. Примечание : вы должны сделать что-то общее для идентификации схемы (например)

  2. (мне нравится 1. лучше) создать интерфейс программного адаптера, который изменяет сопоставления (например,надстройки работают)

1 голос
/ 11 марта 2011

Поскольку я не знаю, насколько динамично это должно быть (имеется в виду, как часто вы будете изменять сопоставления) или сколько у вас есть разных XML-файлов, я предлагаю вам сопоставить таблицы (таблицы) с общим классом, используя предпочитаемый ORM.и создавать экземпляры классов, используя LinqToXml (что очень просто).Один метод или класс на структуру XML.

Здесь приведен пример для LinqToXml -> http://www.switchonthecode.com/tutorials/introduction-to-linq-simple-xml-parsing

Кроме того, если вы не хотите использовать его и используете .NET 4Я создал простую библиотеку для создания динамических объектов из строки XML.Вы можете посмотреть на это здесь -> https://github.com/tucaz/XmlToObjectParser

...