Как скопировать узлы XML из текстового файла и вставить его как EObject EMF в Eclipse?
У меня есть текстовый файл, который содержит несколько узлов XML. Я хочу, чтобы каждый узел копировался / конвертировался как объект EMF и вставлялся в редактор затмений (используя Ctrl + C в текстовом файле и Ctrl + V в редакторе затмений). Но я не могу вставить в редактор Eclipse. Можете ли вы помочь мне.
1 ответ
У меня был похожий вопрос. Вы можете прочитать свою модель XML и преобразовать ее в модель XMI. Таким образом, вам нужно внедрить следующий код в ваш проект EMF. Я создал новый класс и сгенерировал метод main, включая этот код:
//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);
Помните, что вам нужно зарегистрировать ваши EPackages из вашей модели ecore. Итак, щелкните правой кнопкой мыши вашу метамодель.ecore и выберите опцию "Зарегистрировать EPackages". Если на этом этапе возникнет проблема, вы получите org.eclipse.emf.ecore.resource.Resource$IOWrappedException: пакет с uri ' http://something.com/' не найден. (XML-путь).
В заключение:
- Вызовите метод в ваш основной метод, который включает представленный код.
- Зарегистрируйте свои EPackages.
- Если вы получили исключение, преобразуйте данные URI в XML.
PD: Код, представленный в этом посте, изначально был создан @victormpav. Я добавляю некоторые модификации.