Я пытался сделать это как последний этап автономного приложения для преобразования из формата файла, используемого программой моделирования, в модель EMF. Я могу преобразовать исходный формат в XSD, который я могу вручную преобразовать в EMF-модель с использованием импортера Eclipse, но я не знаю, как это сделать программно, чтобы автоматизировать процесс. Java-команды будут работать нормально, как и любой оператор командной строки, чтобы сделать то же самое, так как я мог просто выполнить инструкцию из Java. Я потратил некоторое время на поиски, как это сделать, используя http://wiki.eclipse.org/Generating_Dynamic_Ecore_from_XML_Schema и множество других возможных решений, но ничего не работает. Если кто-то может предоставить некоторый пример кода о том, как сгенерировать файлы .ecore и (/ или?) .genmodel из файла XSD, я был бы очень признателен, но даже некоторые рекомендации относительно того, как я могу продолжить очень поможет.Как программно генерировать EMF-модель (.ecore, .genmodel) из схемы XSD?
спасибо.
Глядя на исходный код Eclipse, часто является лучшим способом найти ответы на такие вопросы.Материал, который вы найдете в вики или в новостных группах Eclipse, часто устарел. –
Я пробовал просматривать импортер Eclipse XSD, чтобы узнать, как он использует XSDEcoreBuilder. Кажется, он делает что-то подобное, создавая список EPackage. Я полагаю, что сборник в http://wiki.eclipse.org/Generating_Dynamic_Ecore_from_XML_Schema также является списком EPackage из-за кода, в котором он выполняет итерацию через коллекцию, чтобы получить каждый отдельный EPackage. Тем не менее, я не понимаю, что вы делаете с этим EPackage, чтобы получить его, скажем, в одном из форматов .ecore или .genmodel или как его вообще читать. То есть, что мне делать с этим EPackage? Простите, что это невежественное. – 2009-08-06 05:12:20
Попытка вызвать generateResources дает ошибку во время выполнения: Исключение в потоке «основного» java.lang.NullPointerException на org.eclipse.xsd.ecore.XSDEcoreBuilder.generateResources (XSDEcoreBuild er.java:2765) в org.eclipse.xsd .ecore.XSDEcoreBuilder.generateResources (XSDEcoreBuild er.java:2742) at ... Вызов генерации вместо generateResources, похоже, работает; однако он генерирует EPackage вместо ресурса, но я не знаю, как его сохранить. Я попытался найти код generateResources и подражать этому в своем коде, но я не могу получить доступ ко всем методам. Спасибо за вашу помощь; выглядит ближе. – 2009-08-07 10:34:17