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插件開發
          主站蜘蛛池模板: 望奎县| 秀山| 喀喇沁旗| 天镇县| 油尖旺区| 英吉沙县| 诏安县| 永登县| 延吉市| 彩票| 辽阳市| 来凤县| 仁化县| 威远县| 江川县| 稷山县| 巴里| 韶山市| 清丰县| 南召县| 吴桥县| 宁蒗| 彭州市| 汤阴县| 包头市| 禄劝| 汉川市| 邢台县| 高州市| 义乌市| 临夏市| 遂平县| 贵德县| 赤城县| 浦县| 阿拉尔市| 焦作市| 清丰县| 吉安县| 老河口市| 汕头市|