2016-03-01 9 views
0

Мне нужно загрузить и проанализировать файл 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.

Так что я попытался еще два параметра:

  1. попробовать конвертировать UML.xmi в UML.xsd с помощью Enterprise Architect и Altova XMLSpy, и делать те же вещи выше, не удались. Лично я считаю, что это преобразование может потерять некоторую информацию.
  2. Я нашел похожий вопрос here,

Вы можете найти XMI XSD на сайте OMG XMI XSD 2.1.1, но вы также будете нуждаться в UML-схеме и схемах MOF. Лучшим способом чтения и записи файлов UML XMI является использование реализации Eclipse UML. Его можно легко использовать вне Eclipse в простой программе Java: см.

Я выполнил ответ и прочитал документацию по реализации Eclipse UML, но я думал, что это не то, что я хочу точно.

Поэтому я надеюсь, что кто-то может дать мне несколько советов. Заранее благодарим за помощь!

ответ

0

Из вашего описания Я не могу сказать ваш конкретный контекст, но XMI обычно используется в качестве формата сериализации (т.е. «физической схемы») для экземпляра метамодели (что-то вроде «логической схемы») ,

Но вы пытаетесь использовать XMI в качестве метамодели и использовать XML (с XSD-схемой) в качестве формата сериализации. Это, вероятно, не то, что вы хотите.

Чтобы загрузить экземпляр метамодели UML, который сериализуется с использованием XMI, просто создайте набор ресурсов и загрузите файл .uml с помощью resourceSet.getResource(uri, true). Пока ваш путь к модулю Eclipse плагина содержит UML-плагин в качестве зависимости, это должно работать.

 Смежные вопросы

  • Нет связанных вопросов^_^