Как использовать EMF для чтения XML-файла?

EMF = платформа моделирования Eclipse

Я должен использовать EMF в одном из моих проектов класса. Я пытаюсь понять, как использовать EMF, чтобы сделать следующее:

  1. Считайте XML,
  2. Получите значения в объекты.
  3. Используйте ORM для сохранения значений в объектах к базе данных. - Сделанный
  4. Получите данные из базы данных с помощью ORM и генерируйте XML.

Я должен сделать все то использование: EMF (никакая идея, что поэтому когда-либо) и (СДЕЛАННЫЙ) JPA.

Я использовал JAXB, и я знаю, это может быть сделано с помощью JAXB, но как (EMF == JAXB)?!

Я создал много классов Java с помощью EMF, но существуют столь многие из них! Где я реализую методы чтения-записи и как я выполняю проект EMF?

Спасибо

ПОДСКАЗКА UPDATE1 http://www.eclipsezone.com/eclipse/forums/t58829.html

UPDATE2

У меня есть схема, и я сгенерировал типовой код с помощью .xsd. Теперь у меня есть проблема в чтении данных с XML-файла.

8
задан skaffman 11 May 2011 в 11:25
поделиться

2 ответа

Обычный способ сделать это - начать с схемы XML, затем использовать ее для генерации модели EMF, а затем сгенерировать код Java. Это описано в этом руководстве по EMF .

Вам не нужно реализовывать методы чтения / записи. Вместо этого вы используете код библиотеки EMF для импорта и экспорта XML. У меня сейчас нет передо мной книги по ЭМП, но она там накрыта. В качестве альтернативы посмотрите, что делает сгенерированный редактор EMF, когда вы загружаете или сохраняете экземпляр модели.

РЕДАКТИРОВАТЬ

Вот служебный класс ресурса из проекта на основе EMF, который я разработал пару лет назад. Посмотрите на методы load * . Обратите внимание, что это не обязательно лучший способ сделать это ... но у меня он сработал.

РЕДАКТИРОВАТЬ 2

Я только что понял, что использую XMI, а не простой XML. Настройка средства чтения XML с использованием настраиваемой схемы и (потенциально) настраиваемого сопоставления схемы, вероятно, будет отличаться. Итак, возвращаясь к моему исходному ответу, посмотрите на сгенерированный код !! .

1
ответ дан 5 December 2019 в 07:57
поделиться

EMF не предназначен для чтения произвольных XML-файлов. EMF использует XML в качестве бэкенда. Откуда берутся ваши XML-файлы/какой схеме они соответствуют? Если у вас есть схема, то вы можете использовать ее для создания модели EMF, которая, в свою очередь, надеюсь, сможет прочитать ваши XML-файлы.

В противном случае вам придется перепроектировать модель EMF, которая действительно сериализуется в ваш XML, чтобы вы могли его прочитать, но это уже будет халтура.

После UPDATE2:

Полагаю, следующий вопрос: "Какая проблема у вас возникает с загрузкой ваших файлов". Как вы это делаете, и что не работает? Или вы не знаете, как это сделать?

Сначала вам нужно настроить фабрику для вашего набора ресурсов (представление в памяти набора файлов, с которыми вы хотите работать), а затем загрузить файл с помощью getResource(URI, bool). Пример для некоторых вещей UML, которые я делаю:

resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
resourceSet.getPackageRegistry().put("http://www.eclipse.org/uml2/2.0.0/UML", UMLPackage.eINSTANCE);
Resource r = resourceSet.getResource(uriToYourFile,true);
YourModelRootType root = (YourModelRootType) r.getContents().get(0);

Это все должно быть рассмотрено в учебнике, ссылка на который у вас уже есть. Затем вы можете использовать сгенерированный Java API для работы с "корнем".

У меня нет опыта работы с ORM, но, возможно, вам стоит взглянуть на CDO.

0
ответ дан 5 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: