EMF = Cadre de modélisation Eclipse P>
Je dois utiliser EMF dans l'un de mes projets de classe. J'essaie de comprendre comment utiliser EMF pour effectuer ce qui suit: p>
J'ai besoin de faire tout cela en utilisant: EMF (aucune idée de ce que jamais) et JPA (fait). P>
J'ai utilisé Jaxb et je sais, cela peut être fait avec Jaxb, mais comment est (EMF == Jaxb) ?! P>
J'ai créé de nombreuses classes Java en utilisant EMF, mais il y en a beaucoup! Où puis-je implémenter les méthodes de lecture / écriture et comment exécuter le projet EMF? P>
merci p>
update1 em> strong>
INDICE
http://www.eclipsezone.com/eclipse/forums/t58829.html p>
update2 em> strong> p>
J'ai un schéma et j'ai généré le code modèle à l'aide de la .xsd .xsd. Maintenant, j'ai un problème dans la lecture des données du fichier XML. P>
5 Réponses :
La manière habituelle de faire ce genre de chose est de commencer par un schéma XML, puis utilisez ceci pour générer le modèle EMF, puis générer un code Java. Ceci est décrit dans Ce tutoriel EMF < / a>. p>
Vous n'avez pas besoin de mettre en œuvre des méthodes de lecture / écriture. Plutôt, vous utilisez le code de la bibliothèque EMF pour effectuer l'importation XML et l'exportation. Je n'ai pas ma copie du livre EMF devant moi en ce moment, mais il est couvert là-bas. Alternativement, jetez un coup d'œil à ce que l'éditeur EMF généré effectue lorsque vous chargez ou enregistrez une instance de modèle. P>
Voici un Classe d'utilitaire de ressources à partir d'une EMF projet que j'ai développé il y a quelques années. Regardez les méthodes Je viens de réaliser que j'utilisais XMI et non uni XML. Configuration d'un lecteur XML avec un schéma personnalisé et (potentiellement) un mappage de schéma personnalisé est susceptible d'être différent. Donc, retour à ma réponse d'origine, regarde le code généré !! em>. P> chargez * code>. Notez que ce n'est pas nécessairement le meilleur moyen de le faire ... mais cela a fonctionné pour moi. P>
Pouvez-vous gimer un démarrage, quelle est la bibliothèque EMF qui a les méthodes pour lire / écrire des fichiers XML?
EMF n'est pas conçu pour lire des fichiers XML arbitraires. EMF utilise XML comme backend. D'où viennent vos fichiers XML / quel schéma sont-ils conformes? Si vous avez le schéma, vous pouvez l'utiliser pour créer un modèle EMF, qui est à son tour capable de lire vos fichiers XML.
Sinon, vous devriez renvoyer l'ingénieur d'un modèle EMF qui seraient effectivement sérialisé à votre XML, Pour que vous puissiez le lire, mais ce serait un hack. p>
après la mise à jour2 strong>: p> Je suppose que la question suivante est alors " Quel problème avez-vous avec chargement de vos fichiers ». Comment faites-vous cela et qu'est-ce qui ne fonctionne pas? Ou vous ne savez pas comment le faire? P> Vous devez d'abord configurer l'usine de votre ensemble de ressources (la représentation en mémoire de l'ensemble des fichiers que vous souhaitez utiliser), puis Chargez le fichier avec GetResource (URI, BOOL). Exemple Pour certains trucs UML, je fais: p> qui devrait tous être couvert dans le didacticiel que vous avez déjà le lien vers lequel vous avez déjà le lien. Ensuite, vous pouvez utiliser l'API Java générée pour travailler à partir de «racine». P> Je n'ai aucune expérience avec le trucs orm, mais peut-être que vous devriez peut-être jeter un oeil à
Oui, CDO ou Teneo mériterait d'être étudié lorsque vous souhaitez stocker des modèles EMF dans des bases de données. Teneo: Eclipse.org/modeling/emft/?project=teneo
EMF Serialise le modèle de données utilisant (la manière la plus populaire par défaut) Xmiresourceimpl, qui Voir http://eclipsedriven.blogspot.com/ pour des articles sur EMF et ses cas d'utilisation. P> Je suis d'accord avec les autres Les répondeurs que EMF n'est probablement pas ce que vous voulez ici. p> Si je veux vraiment utiliser EMF avec une structure XML personnalisée (c.-à-d. non XMI), j'utiliserais probablement jaxb sur marshal / Memarshal Mes objets ( Eobjects). P> SE EMF n'est donc pas identique à JAXB et qu'ils ont des objectifs et des objectifs différents. En fait, vous pouvez probablement combiner EMF et Jaxb d'une manière ou d'une autre. Je n'ai jamais essayé, mais il semble qu'il y ait des cas valides. (Comme je l'ai dit ci-dessus, pour le marshaling / la déshabation d'objets EMF à / à partir de XML) P> Pour comprendre EMF, vous devez changer votre paradigme. Pour commencer, supprimez la partie "XML", laissez-la sortir de votre esprit. Ensuite, je vous suggère de faire ce qui suit: p> EMF a la prise en charge de la lecture / de la rédaction de Metamodels de schéma XML forts> (dossiers XSD) dans le but de les convertir à un métamodèle Ecope, mais pas de fichiers XML conformes à un tel schéma. (Pas même à Ecore), à moins que ces fichiers ne soient au format XMI. p> pour persister les modèles EMF dans une base de données relationnelle, voir:
http://eclipsedRiven.blogspot.com/2010 /12/persisting-emf-Objects-à-rdbms-with.html P> J'utilise Teneo. (et éventuellement, CDO) p> concernant "XML", si vous vous tenez à XMI et que vous vous contentez, EMF rendra votre vie Les objets EMF sont des objets générés par EMF et implémente EOBJECT et directement ou indirectement EXOBITIMPL. Vous ne voudriez généralement pas coder les objets EMF à la main, ce serait une corvée. D'autre part, les "objets" Jaxb sont généralement des pojos d'objets de domaine pure et n'ont aucune exigence supplémentaire de JAXB. Notez que contrairement à Jaxb, Les objets EMF ne sont pas des pojos. Strong> Ceci explique un autre objectif différent entre EMF et JAXB. Leur chevauchement est inférieur à ce que vous imaginiez. P> lecture de XMI (pas XML) est très facile: p>
Vous pouvez lire des fichiers XML arbitraires avec EMF, à condition que vous disposiez du XSD pour eux, et vous n'avez même pas à générer des cours de Java depuis le XSD.
J'ai blogué à ce sujet il y a quelques mois, mais je collerai également les extraits de code ici aussi. Pour une explication légèrement plus détaillée, voir mon article de blog sur comment charger et comparer des fichiers XML arbitraires avec EMF .
Vous devez d'abord charger le XSD et initialiser un couple de choses: p> Après cela, vous pouvez charger vos fichiers XML comme vous le feriez normalement: P>
Bonjour @Zsolt Török - Quel paquet dois-je trouver ressourcesSetFactory code> dans?
J'ai construit un petit programme qui fait une conversion de format de base de modèle utilisant EmftriPle (ancien EMF4SW), c'est-à-dire ECORE XMI (fichier XML) vers RDF TTL. p>
J'ai utilisé certains des conseils dans les réponses ici, alors merci les gars! p>
Peut-être que le code source peut vous inspirer: https://github.com/frostyandy2k/model-transformer < / a> p>
Je ne pense pas que EMF est conçu à cette fin. C'est une modélisation, pas un cadre contraignant
Il est utilisé pour la liaison XML, j'en suis sûr.
@Bozho - EMF est (ou peut être utilisé comme) un cadre de modélisation ou un cadre de liaison. Cela dépend de l'endroit où vous commencez à partir de ... et votre point de vue. (Il s'agit d'un aspect de la méta-modélisation qui est fréquemment mal compris. Les modèles peuvent être considérés comme des données, et inversement.)
@Stephen c Merci, bon à savoir.