Использование Eclipse UML2 для анализа файла XMI, сгенерированного Visual Paradigm

#java #parsing #uml #xmi #visual-paradigm

#java #синтаксический анализ #uml #xmi #visual-paradigm

Вопрос:

Я нарисовал диаграмму классов с помощью Visual Paradigm 8 и экспортировал проект в виде файла XMI 2.1 (экспорт для UML2). итак, есть два файла ( test.xmi.uml и test.xmi.profile.uml ). Для анализа test.xmi.uml я написал этот Java-код, используя eclipse uml2 и emf:

 ResourceSet set = new ResourceSetImpl();
set.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
set.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
Resource res =  set.getResource(URI.createFileURI("C:\test.xmi.uml"), true);
EObject eobj = res.getContents().get(0);
  

но выходной объект ( eobj ) — это AnyTypeImpl , который не очень хорошо читается.
что я должен сделать, чтобы получить хорошо отформатированные объекты, подобные org.eclipse.uml2.uml.Model objects, путем синтаксического анализа этого файла?

Ответ №1:

Я наконец нашел свой ответ: использовать org.eclipse.uml2.uml.resources.util.UMLResourcesUtil.init() для инициализации параметров, необходимых для анализа .uml файла. Итак, код должен быть таким:

 ResourceSet set = new ResourceSetImpl();
UMLResourcesUtil.init(set);
Resource res = set.getResource(typesUri, true);
EObject eobj = res.getContents().get(0);
  

eobj это экземпляр org.eclipse.uml2.uml.Model , который является правильно сформированным объектом.