我用8绘制了一个类图,并将项目导出为XMI2.1文件(ExportforUML2)。所以有两个文件(test.xmi.uml
和test.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
对象这样的格式化良好的对象呢?
发布于 2016-10-23 14:21:45
我终于找到了答案:使用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
的一个实例,它是一个格式良好的对象。
https://stackoverflow.com/questions/40200639
复制相似问题