Java 保存EMF模型
我是EMF新手,尝试保存EMF模型,如下所示:-Java 保存EMF模型,java,emf,Java,Emf,我是EMF新手,尝试保存EMF模型,如下所示:- public void saveData(File file, Device device) throws IOException { final ResourceSet resourceSet = new ResourceSetImpl(); // Use XMI resource System.out.println("file path in saveData " +file.get
public void saveData(File file, Device device) throws IOException {
final ResourceSet resourceSet = new ResourceSetImpl();
// Use XMI resource
System.out.println("file path in saveData " +file.getPath());
Resource xmiResource = resourceSet.createResource(URI.createFileURI(file.getPath() + ".xmi"));
xmiResource.getContents().add(device);
xmiResource.save(null);
// Use XML resource instead
Resource xmlResource = resourceSet.createResource(URI.createFileURI(file.getPath() + ".xml"));
xmlResource.getContents().add(device);
xmlResource.save(null);
}
但在指定路径中未创建任何文件。装载代码为:-
public Device loadData(String fileName) {
final ResourceSet resourceSet = new ResourceSetImpl();
// Use XMI resource
Resource xmiResource;
System.out.println("filename" + fileName);
try {
xmiResource = resourceSet.getResource(URI.createFileURI(fileName + ".xmi"),true);
xmiResource.load(null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return (Device)xmiResource.getContents().get(0);
}
这会产生以下错误:
java.lang.RuntimeException:无法为“file:/C:/Users/Desktop/filename.xmi”创建资源;需要注册的资源工厂使用XMiResourceImpl。它目前运行良好
XMIResourceImpl resource = new XMIResourceImpl();
File source = new File(fileName);
resource.load( new FileInputStream(source), new HashMap<Object,Object>());
Data data = (Data)resource.getContents().get(0);
XMIResourceImpl resource=new XMIResourceImpl();
文件源=新文件(文件名);
load(新的FileInputStream(source),新的HashMap());
Data Data=(数据)resource.getContents().get(0);
用于保存模型
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
Map<String, Object> m = reg.getExtensionToFactoryMap();
m.put("key", new XMIResourceFactoryImpl());
ResourceSet resSet = new ResourceSetImpl();
Resource resource = resSet.createResource(URI.createFileURI(fileName));
resource.getContents().add(data);
resource.save(Collections.EMPTY_MAP);
Resource.Factory.Registry reg=Resource.Factory.Registry.INSTANCE;
Map m=reg.getExtensionFactoryMap();
m、 put(“key”,新的XMIResourceFactoryImpl());
ResourceSet RESET=新的ResourceSetImpl();
Resource-Resource=reset.createResource(URI.createFileURI(fileName));
resource.getContents().add(数据);
resource.save(Collections.EMPTY_MAP);
这听起来像是您的问题:。如果它能帮助其他人解决同样的问题,你可以试着写下你自己的答案。