2016-10-23 9 views
1

Я нарисовал диаграмму классов Visual Paradigm 8 и экспортировал проект как файл XMI 2.1 (Export for UML2). поэтому есть два файла (test.xmi.uml и test.xmi.profile.uml). Для разбора test.xmi.uml я написал Java-код, используя затмение UML2 и эдс:Использование Eclipse UML2 для синтаксического анализа файла XMI с Visual Paradigm

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 объектов, разобрав этот файл?

ответ

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 который представляет собой хорошо сформированный объект.