我正在写一些eclipse emf代码,并希望打印一个EObject的内容(不将其存储到磁盘)。打印一个EObject?
这里是我的尝试:
public static void print(EObject obj) {
Resource eResource = obj.eResource();
try {
eResource.save(System.out, null);
} catch (IOException e) {
e.printStackTrace();
}
}
但给出了一个NullPointerException异常。我曾经尝试这样做,而不是:
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();
}
}
这工作,但它是无法打印到屏幕,而无需指定虚拟URI?
谢谢你的作品!只需要添加我的obj的副本,否则它在打印后不见了:res.getContents()。add(EcoreUtil.copy(obj)); – u123 2011-01-09 19:28:02