Инструмент для генерации кода модели посетителя из XSD - PullRequest
1 голос
/ 26 февраля 2012

Кто-нибудь может предложить некоторые инструменты, которые генерируют файл кода для посещения моделей, определенных в схеме XML?

В идеале он должен генерировать анализатор потокового XML, который читает входной XML и вызывает методы, такие как visitMyModelElement (), когда находит MyModelElement.Тогда я бы просто заполнил пустые методы и получил бы свой код "mapper".

Это была короткая версия, и я попытаюсь описать фон.Я думаю, как нам подойти к еще одной проблеме отображения дерева на дерево: https://gis.stackexchange.com/questions/1879/how-to-convert-gml-to-features-in-arcobjects

- я взглянул на «лучшие практики лучших практиков», просто чтобы напомнить, что OutOfMemoryException когда-нибудь вечером в какой-то вечерBigCustomer случится, если мы пойдем за ними.Есть ли практики лучше, чем лучше?

(я напишу больше информации, если мой вопрос не был достаточно ясен)

1 Ответ

2 голосов
/ 27 февраля 2012

Не совсем ответ на ваш вопрос, но он определенно решаем на Java с плагинами JAXB плюс JAXB. JAXB имеет компилятор схем (XJC), который компилирует схемы XML в классы Java с аннотациями. XJC из эталонной реализации JAXB может быть дополнен плагинами, которые могут генерировать дополнительный код Я написал несколько плагинов для XJC, поэтому я бы сказал, что генерация кода шаблона посетителя не имеет большого значения.

Однако я не думаю, что классический шаблон посетителей - это правильный подход. С помощью схем OGC вы можете легко получить доступ к нескольким сотням, если не тысячи методов «посещения», так что это на самом деле не поможет.

Далее, я действительно не уверен, что это правильный подход к вашей основной задаче. Я думаю, что посетитель на самом деле не облегчит вещи, но сделает их более громоздкими. Я бы пошел на ручную обработку неупорядоченных объектов. В .Net я использовал бы один из инструментов XSD для создания отображений XML / объектов, а затем записывал обработку неупорядоченных объектов в ArcObjects вручную.

Кстати, вот парсер / сериализатор GML Я реализовал на основе сгенерированного JAXB-кода. Он конвертирует между геометриями GML и JTS. (JTS означает Java Topology Suite, один из популярных API для геометрии.) Это почти то же самое, что вы хотите, но для Java / JTS вместо .Net / ArcObjects.

...