ResourceSet resourceSet = ResourceSetFactory.createResourceSet(); Resource resource = resourceSet.getResource(xmlURI, true); resource.load(Collections.EMPTY_MAP); EObject root = resource.getContents().get(0);
//Generate your URI ResourceFactoryImpl factory = new ResourceFactoryImpl(); URI sourceURI = URI.createURI("your xml path"); Resource loadResource = (ResourceImpl)factory.createResource(sourceURI); System.out.println(sourceURI.path()); //Add loading options Map<String, Boolean> options = new HashMap<String, Boolean>(); options.put(XMLResource.OPTION_SUPPRESS_DOCUMENT_ROOT, true); //Load XML loadResource.load( options); //Create XMI output URI targetURI = URI.createURI("your xmi path"); Resource resourceOut = new ResourceImpl(targetURI); //Generating your EObjects from XML model EList listObj = loadResource.getContents(); EObject obj = (EObject) listObj.get(0); resourceOut.getContents().add(obj); resourceOut.save(options);
public static EObject loadEObjectFromString(String myModelXml, EPackage ePackage) throws IOException { // Create a ResourceSet ResourceSet resourceSet = new ResourceSetImpl(); // register XMIRegistryResourceFactoryIml resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put (Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); // register your epackage to the resource set so it has a reference to your ecore // you can get an instance to your epackage by calling YourEPackageClass.getInstace(); resourceSet.getPackageRegistry().put(ePackage.getNsURI(), ePackage); Resource resource = resourceSet.createResource(URI.createURI("*.modelextension")); resource.load(new URIConverter.ReadableInputStream(myModelXml), null); // return the root model object and there you have it, all you need is to // cast it to the right EObject based on your model return resource.getContents().get(0); }