随笔:25 文章:1 评论:66 引用:0
steeven
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
EMF之ResourceSet探索(1)
这个东西比较有趣,代码还要区分是否在Eclipse环境下运行。
先看看现象,以EMF例子Library.ecore为例, 测试代码如下:
public
class
Test
{
public
static
void
main(String[] args)
throws
IOException
{
ResourceSet rs
=
new
ResourceSetImpl();
rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
Resource.Factory.Registry.DEFAULT_EXTENSION,
new
XMIResourceFactoryImpl()); //outside eclipse
Resource resource
=
rs.createResource(URI
.createURI(EXTLibraryPackage.eNS_URI));
//
step a
Library library
=
EXTLibraryFactory.eINSTANCE.createLibrary();
library.setName(
"
some lib
"
);
resource.getContents().add(library);
//
step b
//
Book book = EXTLibraryFactory.eINSTANCE.createBook();
//
book.setTitle("some book");
//
Employee employee = EXTLibraryFactory.eINSTANCE.createEmployee();
//
employee.setFirstName("some one");
//
step c
//
library.getBooks().add(book);
//
library.getEmployees().add(employee);
//
step d
//
resource.getContents().add(book);
//
System.out.println(EcoreUtil.getURI(employee));
//
System.out.println(EcoreUtil.getURI(book));
resource.save(System.out,
null
);
}
}
步骤
输出
a
----------------
<?xml version="1.0" encoding="ASCII"?>
<extlib:Library xmi:version="2.0" xmlns:xmi="
http://www.omg.org/XMI
" xmlns:extlib="
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0
" name="some lib"/>
b
#//
#//
<?xml version="1.0" encoding="ASCII"?>
<extlib:Library xmi:version="2.0" xmlns:xmi="
http://www.omg.org/XMI
" xmlns:extlib="
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0
" name="some lib"/>
c
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0#//@employees.0
#//
<?xml version="1.0" encoding="ASCII"?>
<extlib:Library xmi:version="2.0" xmlns:xmi="
http://www.omg.org/XMI
" xmlns:extlib="
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0
" name="some lib">
<employees firstName="some one"/>
</extlib:Library>
d
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0#/0/@employees.0
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0#/1
<?xml version="1.0" encoding="ASCII"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="
http://www.omg.org/XMI
" xmlns:extlib="
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0
">
<extlib:Library name="some lib">
<employees firstName="some one"/>
</extlib:Library>
<extlib:Book title="some book"/>
</xmi:XMI>
可以看到,没有加入lib的时候,employee/book实例的URI都是#//, employee加入以后有了
#//@employees.0
, book依旧。
在book加入resource以后有了#/1的URI, employee/book在containment定义分别是true,false,所以employee加入lib以后就随lib加入resource(实例容器)。book则要单独加入。
另外一个有趣的现象是Resource可以容纳多个实例,在step d可以看到输出的根节点由lib变成匿名容器。
如果lib不加入resource又如何呢?
步骤
输出
a
----------------
b
#//
#//
c
#///@employees.0
#//
d
----------------
没加入resource之前,URI是未知的,知道的只是相对父节点的相对segment.
发表于 2006-05-25 22:40
steeven
阅读(1186)
评论(1)
编辑
收藏
所属分类:
程序点滴
、
学习笔记
评论
#
re: EMF之ResourceSet探索(1)
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0#/0/@employees.0
http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0#/1
<?xml version="1.0" encoding="ASCII"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="
http://www.omg.org/XMI"
xmlns:extlib="http:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0">
<extlib:Library name="some lib">
<employees firstName="some one"/>
</extlib:Library>
<extlib:Book title="some book"/>
</xmi:XMI>
对于上面这个例子,URI可否根据名字指定,例如,指定firstName来选择,而不是employees.0 或者 employees.1
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
吹一吹偶的新作品:skype remote desktop
GWT开发中的几个问题
开发过程中的鸡生蛋蛋生鸡的问题
监听Swing窗口的键盘鼠标事件
GWT做的guess number
EMF之ResourceSet探索(4)
EMF之ResourceSet探索(3)
EMF之ResourceSet探索(2)
EMF之ResourceSet探索(1)
Annotation Wizard for EMF插件
CALENDER
<
2006年5月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(10)
给我留言
查看公开留言
查看私人留言
随笔分类
学习笔记(11)
(rss)
程序点滴(16)
(rss)
胡思乱想(8)
(rss)
随笔档案
2009年5月 (1)
2006年12月 (1)
2006年7月 (2)
2006年6月 (7)
2006年5月 (8)
2006年4月 (2)
2006年3月 (1)
2006年1月 (2)
2005年12月 (1)
文章档案
2006年8月 (1)
相册
annotation_wizard
samples
我的链接
我在csdn上的窝
(rss)
很久没打理了
我在MSN上的窝
(rss)
我在博客园的窝
(rss)
我在天涯上的窝
搜索
最新评论
1. re: 编程使用SDO[EMF兄弟篇]
最近也在看这个,有没有好点的文章和代码啊,有的话麻烦给些,谢谢,邮箱:
huanggenping2002@163.com
--zebrahgp
2. re: SNMP亲密接触
请问,我在接收Trap时,同时有多个设备发送,在同一时间接收到的会有丢失的情况,怎么解决呢?snmp4j自带的ThreadPool类有没有在这方面起到多线程作用?
--analyser
3. re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
邮箱: litao5168@sohu.com 谢谢
--litao
4. re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
--litao
5. re: 编程使用SDO[EMF兄弟篇]
评论内容较长,点击标题查看
--1984prince
Powered By:
博客园
模板提供
:
沪江博客