yegucheng

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            9 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

          今天看到兩種使用EMF解析.xml為EMF模型的策略:
          一種是通過如下代碼:

          IFileEditorInput?modelFile? = ?(IFileEditorInput)getEditorInput();
          URI?resourceURI?
          = ?URI.createPlatformResourceURI(modelFile.getFile().getFullPath().toString());;
          resource? = ?editingDomain.getResourceSet().getResource(resourceURI,? true );
          上面這種方式會引用一個AdapterFactoryEditingDomain類,但我們基于模型做編輯器時,有時并不需要用這個類,例如GEF,它具有自身的EditorDomain。

          另外一種方式是使用EMF模型自動生成的Process,該類一般在模型的Util包下面,引用代碼如下:
          IFileEditorInput?modelFile?=?(IFileEditorInput)getEditorInput();????????
          XMLProcessor?processor?
          =??new?DesignXMLProcessor();????????????
          ?resource?
          =?processor.load(new?InputSource(new?InputStreamReader(modelFile.getFile().getContents(),?"GBK")),?null);
          ????????

          其實,對于EMF而言,上面兩種解釋方式,歸根到底都需要EMF獲得 業務模型相關的解析器,對于第一種方式,EMF是如何獲取到業務模型的解析器呢?主要是通過擴展的方式,擴展定義在模型的plugin.xml中,代碼片斷如下圖所示:
          ??<extension?point="org.eclipse.emf.ecore.extension_parser">
          ????
          <parser?
          ???????type
          ="design"?
          ???????
          class="com.neusoft.report.design.util.DesignResourceFactoryImpl"?/>
          ??
          </extension>

          這樣,解析.xml文件時,EMF從ResourceFactory注冊中,根據相應的type,獲取解析器(DesignResourceFactoryImpl),完成解析。
          posted on 2007-03-07 13:08 yegucheng 閱讀(1640) 評論(0)  編輯  收藏 所屬分類: Eclipse插件開發
          主站蜘蛛池模板: 津市市| 杨浦区| 贺兰县| 永德县| 溆浦县| 来宾市| 调兵山市| 荃湾区| 淮安市| 册亨县| 隆德县| 通州区| 朝阳市| 福清市| 茶陵县| 吉安市| 罗源县| 桐城市| 兴安盟| 综艺| 延庆县| 娱乐| 武隆县| 六盘水市| 平远县| 开化县| 大石桥市| 礼泉县| 枣阳市| 河东区| 普定县| 山东| 湘潭市| 桃园县| 宝清县| 郴州市| 酒泉市| 九龙城区| 泰来县| 依安县| 灌南县|