Мне нужно загрузить и проанализировать файл xmi (версия: OMG XMI 2.4.1) с помощью EMF, но теперь застрял.Загрузить и проанализировать файл XMI с помощью EMF
В OMG XMI Spec 2.4.1, есть схема XMI XMI.xsd и XMI-model.xmi. Так вот, например, мне нужно загрузить и разобрать XMI-model.xmi от EMF.
То, что я сделал следующим образом:
- Новый проект с EMF в Затмении
- Импорт XMI схемы: XMI.xsd, и получить xmi.genmodel файл
- Используйте xmi.genmodel, чтобы сгенерировать весь код в затмении, он сгенерирует код модели
Новый тестовый пример Junit4 и попробуйте l oad XMI-model.xmi файл с Junit plug-in test но не удалось, следующий мой код.
@Test public void test() throws IOException { URI uri = URI .createFileURI("/home/pzhengshuai/Desktop/15Feb-19Feb/XMI-model.xmi"); _20110701ResourceFactoryImpl factory = new _20110701ResourceFactoryImpl(); Resource resource = factory.createResource(uri); Map<String, Boolean> options = new HashMap<String, Boolean>(); options.put(XMLResource.OPTION_KEEP_DEFAULT_CONTENT, Boolean.TRUE); resource.load(options); EObject model = (EObject) resource.getContents().get(0); Assert.assertNotNull(model); }
Исключение:
org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Feature 'XMIType' not found. (file:/home/pzhengshuai/Desktop/15Feb-19Feb/XMI-model.xmi, 2, 164)
Хорошо, тогда я пытался прочитать файл XSD и файл XMi, я обнаружил, есть пространство имен xmlns:uml="http://www.omg.org/spec/UML/20110701"
внутри XMI-model.xmi, поэтому я пошел по ссылке uml space и попытался найти схему UML. К сожалению, в этой ссылке все файлы об UML представлены в формате XMI.
Так что я попытался еще два параметра:
- попробовать конвертировать UML.xmi в UML.xsd с помощью Enterprise Architect и Altova XMLSpy, и делать те же вещи выше, не удались. Лично я считаю, что это преобразование может потерять некоторую информацию.
- Я нашел похожий вопрос here,
Вы можете найти XMI XSD на сайте OMG XMI XSD 2.1.1, но вы также будете нуждаться в UML-схеме и схемах MOF. Лучшим способом чтения и записи файлов UML XMI является использование реализации Eclipse UML. Его можно легко использовать вне Eclipse в простой программе Java: см.
Я выполнил ответ и прочитал документацию по реализации Eclipse UML, но я думал, что это не то, что я хочу точно.
Поэтому я надеюсь, что кто-то может дать мне несколько советов. Заранее благодарим за помощь!