2016-07-01 16 views
0

Я создал файл ecore для базового семейства, и я сгенерировал модель, отредактировал и редактировал код, и теперь я запускаю приложение, я могу создать файл семейной модели в время выполнения. Но теперь я хочу прочитать этот файл модели, чтобы получить сериализованные объекты, хранящиеся в семейном файле модели.Как читать сериализованные объекты, хранящиеся в файле модели

Модель файл типа

? XML версия = "1.0" кодирование = "UTF-8"?

ответ

0

Это простой вопрос EMF (я имею в виду, это не связано с Сириусом). Если вы новичок в EMF, this ссылается на некоторую документацию. В частности, this PDF является образцовой главой книги «EMF» », в которой представлен обзорный ракурс высокого уровня. В частности, раздел Object Persistence должен ответить на ваш вопрос (в частности, фрагмент кода на стр. 31, который показывает, как загрузить ресурс/модель в память).

0

Если у вас есть базовые семьи метамодель, и если вы сгенерировали свою модель, редактировать и редактор кода и, если вы создали модель «.basicfamily» от него, вы можете прочитать его, используя этот кусок кода:

URI uri = URI.createURI(new File("path of your file").getAbsolutePath()); 
ResourceSet resourceSet = new ResourceSetImpl(); 
resourceSet.getPackageRegistry().put(BasicfamilyPackage.eNS_URI, BasicfamilyPackage.eINSTANCE); 
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("basicfamily", new XMIResourceFactoryImpl()); 
Resource resource = resourceSet.getResource(uri, true); 
List<EObject> contents = resource.getContents(); 
// now you can iterate on the root objects of your model, use EObject#getContents() to 
// retrieve the children of an EObject and thus navigate in your data 

Если этот код запущен в плагине Eclipse с установленной метамоделью, некоторые части этого кода могут не понадобиться (добавление основного семейства EPackage в реестр пакетов и регистрация фабрики ресурсов), поскольку они обрабатывается plugin.xml сгенерированных проектов.