Ich schreibe etwas Eclipse EMF-Code und möchte den Inhalt eines EObject drucken (nicht auf Festplatte speichern). HierDrucken Sie ein EObject?
ist das, was ich versuche:
public static void print(EObject obj) {
Resource eResource = obj.eResource();
try {
eResource.save(System.out, null);
} catch (IOException e) {
e.printStackTrace();
}
}
aber das gibt eine Nullpointer. Ich habe dies stattdessen versucht:
public static void print(EObject obj) {
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap()
.put("*", new XMIResourceFactoryImpl());
Resource resource = resourceSet.createResource(URI.createURI("dummyfile.xml"));
resource.getContents().add(obj);
try {
resource.save(System.out, null);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
Dies funktioniert, aber ist es nicht möglich, Bildschirm zu drucken, ohne eine Dummy-URI spezifiziert ??
Danke das funktioniert! Ich muss nur eine Kopie von meinem obj hinzufügen, sonst ist es nach dem Ausdruck gegangen: res.getContents(). Add (EcoreUtil.copy (obj)); – u123
@tul Ich werde den Code aktualisieren. Denken Sie daran, EMF ist nur ein Framework, so dass all diese Objekte von Implementierungen unterstützt werden. Ich würde vermuten, dass es einen Null-Implementierungswert gibt, den EcoreUtil ersetzt. –