Отображение внутренних элементов данных в XML-схему внешних поставщиков - PullRequest
4 голосов
/ 17 сентября 2008

Я рассматриваю Altova MapForce (или что-то подобное) для создания XSLT и / или класса Java или C # для перевода. Сегодня мы извлекаем данные прямо из базы данных и вручную создаем строку XML, которую мы публикуем в веб-сервисе.

Должен ли это быть db -> (внутренний) XML -> XSLT -> (внешний) XML? Что вы, ребята, делаете в широком мире?

Ответы [ 4 ]

3 голосов
/ 17 сентября 2008

Я бы использовал один из готовых классов сериализации XML для выполнения внутренней генерации XML, а затем использовал XSLT для преобразования во внешний XML. Вы также можете сгенерировать схему для обеспечения того, чтобы код перевода (независимо от того, что будет управлять вашим переводом XSLT) продолжал получать XML, который он ожидает для перевода в случае, если изменения в объекте ломают вещи.

На рынке имеется ряд редакторов XSLT, которые помогут вам выполнить сопоставления, но я предпочитаю просто использовать обычный редактор XML.

1 голос
/ 17 сентября 2008

Да, я думаю, вы идете по правильному пути с MapForce. Если вы не хотите писать код для предварительного преобразования, MapForce может сделать это и для вас. Это может быть лучше в долгосрочной перспективе, потому что это меньше кода для обслуживания.

Держитесь подальше от более дорогих вариантов (например, BizTalk), если только вам действительно не нужна интеграция и оркестровка B2B.

0 голосов
/ 17 сентября 2008

Совет № 1: избегайте любого использования XSLT.

Опора инструмента отстой. Полученное решение будет неуправляемым.

Совет № 2: устраните все ненужные шаги.

Просто переведите ваш набор результатов (при условии, что вы используете JDBC или его эквивалент) в исходящий XML.

Совет № 3: Предполагайте, что все использование инструмента на основе схемы является неправильным и планируйте соответственно.

Другими словами, просто подделайте это. Если вам нужно избавиться от некоторой мутантной полезной нагрузки SOAP (я знаю, что это избыточно), просто смоделируйте работающее сообщение SOAP и затем превратите его в шаблон. Скорость не отстой.

Тем не менее, лучший / правильный ответ - использовать решение в стиле "XML Writer". Есть несколько.

Лучшее, что я написал, LOX (Легкие объекты для XML) .

Публичный API использует шаблон проектирования Builder. Из-за какой-то магии под капотом невозможно создать искаженный XML.

Обратите внимание: Если XML является ответом, вы задали неправильный вопрос. Иногда мы вынуждены против нашей воли использовать это каким-то образом. Когда это происходит, крайне важно использовать инструменты, которые минимизируют усилия разработчика и улучшают поддержку кода.

0 голосов
/ 17 сентября 2008

Какую базу данных вы используете? У Oracle есть несколько хороших инструментов отображения XML. Существуют некоторые инструменты связывания Java (один из них http://java.sun.com/developer/technicalArticles/WebServices/jaxb). Однако, если у вас есть возможность подумать об использовании Ruby, который имеет хорошие встроенные методы "to_xml".

...