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