@trase8

XML to XML парсинг и конвертация. Как переделать структру?

Есть база данных книг в xml. Внутри такие поля как автор, издательство, год, текст, страницы и тд. Это экспорт из какой-то системы1. А есть другая система2, куда нужно загрузить эти данные, но там у xml файлов другая структура - другие тэги или вообще отсутствие некоторых. Эти теги по смыслу такие же, но написаны по-разному.
Например, в система1 есть тег date в формате date, а в системе2 аналог date_of_outgoing типа string.
Нужно сделать конвертер, который бы принимал на вход данные в формате системы1 и переделывал их в xml для системы2.
Имеем:
- xsd файлы исходные и желаемые
- dtd файы исходные и желаемые
- xml файл с данными и пример xml из системы2.

Могу писать несложные программы на c++, c#, js, php. Мб есть готовые решения? Посоветуйте, как лучше решить эту задачу? Парсить все как текст и заменять слова? Это геморно, мб есть библиотеки? или вообще сторонний софт? Мб другие подходы?
  • Вопрос задан
  • 541 просмотр
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Задача: Поиск пересечений двух структур.

Порядок действий:
1. Поиск пересечения ветвей
2. Анализ схожих элементов структуры (левенштейн и т.д.) и корректировка ОБЩЕЙ структуры.
3. Создание словаря синонимов ([ID уникальной сущности]: Писатель, Создатель, Creator, Author), затем - снова п.2.
4. Оставшеися данные - ручной мэппинг.

Как делать?
Потоковым методом (без проверки целостности структуры XML).
https://www.ibm.com/developerworks/ru/library/x-xm...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@nirvimel
XSLT - Если хочется декларативно описыать преобразования.
Если приятнее императивно, тогда просто руками на любом ЯП.
Ответ написан
@trase8 Автор вопроса
хотя, не очень уж это и геморно)
Ответ написан
Комментировать
@balamyt92
; select * from users; --
Тебе нужна библиотека для парсинга xml? ну я допустим использовал такую из состава фреймворка Qt. doc.qt.io/qt-5/qtxml-module.html
вот неплохая статейка с примером habrahabr.ru/sandbox/61031 если в инглиш трудно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы