У меня есть данные в базе данных в одной схеме, которые мне нужно преобразовать в XML другой схемы.
XML - это собственная система сообщений / ответов сторонних производителей.У нас есть доступ к справочному документу, в котором дается разбивка всех сущностей и сложных типов, и у нас есть XSD-документы.Потенциально существуют сотни различных вариантов запросов XML-документов, поскольку элементы 2-го и 3-го уровня содержат индикаторы выбора в диапазоне от 2 до 200.
Используемый в настоящее время метод - это метод грубой силы - запрос, чтобы получить всеЗатем данные в объект DataSet (с помощью справочного документа) вручную генерируют XML, объединяя данные в строку.Этот подход работает для 2 или 3 вариантов, которые нам нужны.
Теперь, когда мы хотим поддержать больше вариантов, мы хотим отойти от подхода грубой силы.У нас также есть несколько версий, но мы используем самую поддерживаемую версию, и мы хотели бы подойти к решению с учетом масштабируемости.
Что мы сделали? Мы сгенерировали классы из документа XSD, который дал нам 2300 + частичных классов.Я начал разработку библиотеки методов заполнения для каждого объекта класса, который использует объект координат (таблица, столбец, свойства строки) для конкретных данных в наборе данных.Но, понимая, что для заполнения координатных объектов нам потребуется просмотреть данные, возникает вопрос: почему бы просто не заполнить фактический объект XML в это время?
Было бы меньше проблем, если бы каждую из таблиц набора данных можно было сопоставить с одним объектом XML, однако данные для одного объекта, вероятно, распределены по нескольким таблицам.
Idea 1
В последнее время я размышляю над комбинацией Factory / Builder для создания / заполнения объектов xml.
Idea 2
Еще одна идея, которая у меня была, заключалась в том, чтобы включить систему атрибутов свойств, которая имеет имя таблицы, имя столбца - это приводит к проблеме, когда один и тот же объект xml получает идентичное свойство из 2 разных мест в DataSet на основеВыбор элементов 2-го или 3-го уровня.Всегда можно добавить другой указатель (тип выбора?) И затем иметь несколько атрибутов для свойства.
Idea 3
Еще одним соображением является переписывание хранимой процедуры для извлечения данных в правильных таблицах-объектах, проблема, которая заключается в том, чтоУ меня с этим движется логика из кода в SQL.Это действительно просто помещает проблему в другую область приложения.
Решения сторонних производителей не совсем исключены.Я ищу предложения о том, как подойти к этой проблеме.
ОБНОВЛЕНИЕ: сгенерированный XML записывается в файл и затем используется сторонним приложением.