1

我已经通过 Visual Paradigm 8 绘制了一个类图,并将项目导出为 XMI 2.1 文件(用于 UML2 的导出)。所以有两个文件(test.xmi.umltest.xmi.profile.uml)。为了解析test.xmi.uml,我使用 eclipse uml2 和 emf 编写了这个 java 代码:

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通过解析这个文件来获得像对象这样格式良好的对象?

4

1 回答 1

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);

theeobjorg.eclipse.uml2.uml.Model一个格式良好的对象的实例。

于 2016-10-23T14:21:45.817 回答