Сопоставление внутренних элементов данных со схемой XML внешних поставщиков.

StackOverflow https://stackoverflow.com/questions/79594

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Совет № 2:Исключите все ненужные шаги.

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top