EMF serializa el modelo de datos utilizando (la forma predeterminada y más popular) XMIResourceImpl, que usa estrictamente el formato XMI, y no una estructura XML personalizada.
Consulte http://eclipsedriven.blogspot.com/ para los artículos sobre EMF y sus casos de uso.
Estoy de acuerdo con otros que afirman que EMF probablemente no es lo que usted quiere aquí.
Si realmente quiero usar EMF con una estructura XML personalizada (es decir, no XMI), probablemente usaría JAXB para ordenar/deshacer mis objetos EMF (EObjects).
Así que EMF no es lo mismo que JAXB y tienen diferentes propósitos y metas. De hecho, es probable que pueda combinar EMF y JAXB de alguna manera. Nunca lo intenté, pero parece que hay casos de uso válidos. (como dije antes, para ordenar/eliminar los objetos EMF de/desde XML)
Para entender EMF, debe cambiar su paradigma. Para empezar, elimine la parte "XML", déjelo ir de su mente. Luego, le sugiero que haga lo siguiente:
- Cree un proyecto EMF vacío.
- Crea un archivo Ecore simple (.ecore) u obténlo de Internet. O importe desde cualquier archivo XML Schema/UML a un modelo de Ecore.
- Haga clic derecho en un EClass y luego "Crear instancia dinámica", esto creará un archivo .xmi.
- Abra el archivo .xmi, utilizando Eclipse, esto abrirá el editor EMF para ese modelo. Edita como mejor te parezca.
- Inspeccione el contenido del archivo .xmi (editado). Verás que el formato se ajusta exactamente al modelo de Ecore. No podrá cambiar/personalizar la asignación del modelo < -> archivo XMI porque, como su nombre lo indica, XMIResourceImpl solo lee/guarda archivos XMI (que se implementan sobre XML) pero no lee/guarda formato XML arbitrario.
EMF tiene soporte para la lectura/escritura XML Schema metamodelos (es decir,Archivos XSD) con el fin de convertirlos a un metamodelo Ecore, pero no archivos XML que se ajusten a dicho esquema (ni siquiera a Ecore), a menos que estos archivos estén en formato XMI.
por persistir modelos EMF en una base de datos relacional, ver: http://eclipsedriven.blogspot.com/2010/12/persisting-emf-objects-to-rdbms-with.html
estoy usando Teneo. (Y, opcionalmente, CDO)
En cuanto a "XML", si nos atenemos a XMI y estar contento con ella, la FEM le hará la vida mucho más más fácil, ya que no es necesario hacer ninguna mapeo (a diferencia JAXB). La desventaja es que nuestros objetos deben ser Objetos EMF.
EMF Los objetos son objetos que se generan por EMF e implementa EObject y extiende directa o indirectamente EObjectImpl. Por lo general, no querrás codificar objetos EMF a mano, sería una tarea ardua. Por otro lado, los "objetos" de JAXB suelen ser POJO de objetos de dominio puro y no tienen requisitos adicionales de JAXB. Tenga en cuenta que, a diferencia de JAXB, los objetos EMF no son POJO. Esto explica otro objetivo diferente entre EMF y JAXB. Su superposición es menor de lo que imaginas.
lectura de XMI (no XML) es muy fácil:
XMIResource resource = new XMIResourceImpl(URI.create("file:/path/to/mymodel.xmi"));
resource.load(null);
System.out.println(resource.eContents().get(0));
No creo EMF está diseñado para ese propósito. Es un modelo, no un marco vinculante – Bozho
Se utiliza para enlace XML, estoy seguro de eso. – zengr
@Bozho - EMF es (o se puede usar como) un marco de modelado o un marco vinculante. Depende de dónde empiezas ... y de tu punto de vista. (Este es un aspecto del metamodelado que a menudo se entiende mal. Los modelos se pueden ver como datos, y viceversa). –