安徽新华电脑专修学院_安徽电脑培训_安徽电脑培训学校_合肥电脑培训

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > EMF的存儲(chǔ)設(shè)置

EMF的存儲(chǔ)設(shè)置
2010-01-14 22:49:41  作者:  來(lái)源:
一般我們?cè)趯?duì)EMF模型內(nèi)容進(jìn)行輸出,這里需要進(jìn)行一些定制,下面是我在項(xiàng)目中做的一些定制,第一個(gè)是要將EMF Model輸出的xml中去掉一些名稱(chēng)空間的信息,第二個(gè)就是希望把某些信息由Attribute類(lèi)型轉(zhuǎn)換成Content類(lèi)型,在得到的content類(lèi)型的內(nèi)容默認(rèn)情況下會(huì)對(duì)<, >, &等字符進(jìn)行轉(zhuǎn)換,這個(gè)也可以進(jìn)行控制。借鑒EMF開(kāi)發(fā)指南的做法,其實(shí)很簡(jiǎn)單,這里要注意save和load使用的控制選項(xiàng)設(shè)置必須一致。
具體做法如下,
因?yàn)楸4婧图虞dxml是在XMLResourceImpl里面進(jìn)行的,所以我們需要從該類(lèi)繼承,overriding 相應(yīng)的load和save方法,然后在使用到XMLResourceImpl的地方改成使用我們的派生之類(lèi),在定制的子類(lèi)中,我們做了如下實(shí)現(xiàn):
java 代碼
 
  1. public void load(Map options) throws IOException {   
  2.     super.load(addOptions(options));   
  3. }   
  4.   
  5. public void save(Map options) throws IOException {   
  6.     super.save(addOptions(options));   
  7. }   
  8.   
  9. /**  
  10.  * 設(shè)置序列化/反序列化選項(xiàng)  
  11.  *   
  12.  * @param options  
  13.  */  
  14. private Map addOptions(Map options) {   
  15.     // 這里的map只應(yīng)創(chuàng)建一次   
  16.     XMLResource.XMLMap xmlMap = new XMLMapImpl();   
  17.   
  18.     EPackage ePackage = Configuration.INSTANCE.getViewEPackage();   
  19.     XMLResource.XMLInfo info = new XMLInfoImpl();   
  20.     info.setXMLRepresentation(XMLResource.XMLInfo.CONTENT);   
  21.   
  22.     // 將event的內(nèi)容在attribute和content之間轉(zhuǎn)換   
  23.     EClass eClass = (EClass) ePackage   
  24.             .getEClassifier(Configuration.EVENT_NAME);   
  25.     xmlMap.add(eClass   
  26.             .getEStructuralFeature(Configuration.EVENT_ATTRIBUTE_CONTENT),   
  27.             info);   
  28.   
  29.     // 在生成的ddxml中去掉namespace聲明   
  30.     xmlMap.setNoNamespacePackage(ePackage);   
  31.   
  32.     if (options == Collections.EMPTY_MAP) {   
  33.         options = new HashMap();   
  34.     }   
  35.        
  36.     options.put(XMLResource.OPTION_XML_MAP, xmlMap);   
  37.        
  38.     // 避免對(duì)<,>,&等字符進(jìn)行轉(zhuǎn)換   
  39.     options.put(XMLResource.OPTION_SKIP_ESCAPE, Boolean.TRUE);   
  40.   
  41.     return options;   
  42. }  

 

因?yàn)槲覀冞@里沒(méi)有對(duì)特殊字符進(jìn)行轉(zhuǎn)換,所以我們需要在生成的content類(lèi)型的內(nèi)容加上<![CDATA, ]]>, 這個(gè)我們需要生成自己的XMLSaveImpl,然后overriding getContent(EObject o, EStructuralFeature[] features)這個(gè)方法:

java 代碼
 
  1. protected String getContent(EObject o, EStructuralFeature[] features) {   
  2.     if (map == null)   
  3.     {   
  4.       return null;   
  5.     }   
  6.   
  7.     for (int i = 0; i < features.length; i++)   
  8.     {   
  9.       EStructuralFeature feature = features[i];   
  10.       XMLResource.XMLInfo info = map.getInfo(feature);   
  11.       if (info != null && info.getXMLRepresentation() == XMLResource.XMLInfo.CONTENT)   
  12.       {   
  13.         Object value = helper.getValue(o, feature);   
  14.         String svalue = getDatatypeValue(value, feature, false);   
  15.         if (toDOM)   
  16.         {               
  17.           Node text = document.createTextNode(svalue);   
  18.           currentNode.appendChild(text);   
  19.           handler.recordValues(text, o, feature, value);   
  20.         }else {   
  21.             // 將內(nèi)容前后加上<![CDATA and ]]>   
  22.             svalue = "<![CDATA[\n" +svalue + "\n]]>";   
  23.         }   
  24.         return svalue;   
  25.       }   
  26.     }   
  27.     return null;   
  28. }   

 當(dāng)然了還必須在前面自己的XMLResourceImpl類(lèi)里面重載createXMLSave()方法:

 

 

java 代碼
 
  1. protected XMLSave createXMLSave() {   
  2.     return new DoradoXMLSaveImpl(createXMLHelper());   
  3. }  

安徽新華電腦學(xué)校專(zhuān)業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢(xún)
主站蜘蛛池模板: 履带式移动破碎站-移动筛分站-移动碎石机-破碎机_山东奥凯诺矿机 | 交通标志牌-交通标牌-铝圆牌-铝三角片-铝滑槽-公路警示指示牌-方牌-高速道路反光牌毛坯-交通设施安全警示标识牌-路名指示限速限高牌-厂家加工交通标牌铝板半成品毛坯-上海吕盟铝业有限公司 | 树枝粉碎机,锯末机,木材粉碎机的专业生产厂家利鑫机械,问价格找利鑫 | 注塑机螺杆_光学无卤耐磨耐腐蚀螺杆_合金材料_螺杆研磨抛光机_杰宇螺杆 | 生物柴油设备,乙醇精馏塔,醋酸精馏塔生产厂家-无锡弘鼎华化工设备有限公司 | 三七/灵芝超微粉碎机,小型超细粉碎机价格-北京燕山正德机械设备有限公司 | 苏州氮气弹簧厂家_江浙沪氮气弹簧价格_江苏氮气弹簧规格_BelleFlex碟形弹簧_昆山三虑五金机械有限公司 | 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 徐州户外广告,标识标牌,展陈空间,精神堡垒-徐州雅努思文化发展有限公司 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 全球环保研究网_生态环境绿色产业咨询部_生态文明建设行业智库 ? | 美国西娅图床垫官网-专注高端床垫18年 - 美国西娅图床垫官网 | -盐城市精工阀门有限公司| 输送带_山东输送带厂家_橡胶传送带-山东中输输送机械有限公司 | 排水PVC管-PVC排污管-给水PVC管-电线PVC管-米阳建材pvc管厂 | 直流屏|青岛直流屏|直流屏电池-世界500强艾默生直流屏标准生产厂家赛里斯能源科技有限公司 | 削片机|木材破碎机|木材粉碎机|模板破碎机|双轴撕碎机_郑州木工机械制造厂 | 全棉帆布厂家_加工帆布_涤棉帆布价格_染色帆布定制_广州美丽华皮革帆布-广州美丽华皮革帆布 | 真空烘箱-高低温试验箱-防爆烘箱-防爆高低温试验箱-老化房-恒温恒湿箱-高低温试验箱-高低温冲击试验箱厂家—上海标承实验仪器有限公司 | 通用变频器|国产变频器|深圳变频器厂家-深圳市英捷思技术有限公司 | 暖气片-工程暖气片厂家【专注工程暖气片30年】-北铸暖气片 | 杀菌剂_除藻剂_杀菌灭藻剂_1227杀菌剂_中北精细化工 | 商业地产策划_商业地产代理_华锦亿爵商业地产顾问机构 | 临沂网站建设,临沂网站制作,临沂网络公司,临沂小程序开发,临沂网站设计,沂水网站建设,沂南网站建设,蒙阴网站建设,平邑网站建设,费县网站建设,兰陵网站建设,郯城网站建设,临沭网站建设,莒南网站建设,兰山网络公司 | 河南桥式起重机-河南门式起重机-宇华起重设备集团(官网) | 联系我们果博东方在线开户客服电话:19038688886 - 黑龙江旺广机械设备有限公司 | 消防安装_消防安装施工_消防施工_北京消防安装公司-亿杰(北京)消防工程有限公司 | 无锡大型数控龙门铣加工中心,精密焊接件制造,机械设备加工-无锡嘉迅机械科技有限公司 | 全自动高速点胶机,锡膏喷印机系列,点胶阀核心配件厂家-博宁 | 无锡纯铁-中纯特钢纯铁公司 | 无锡亮鑫不锈钢有限公司-不锈钢炉胆,马弗炉胆,耐高温炉胆,310s炉胆,网带炉 | 移动破碎机,欧版颚式破碎机-淄博巨鑫矿山机械有限公司 | 武汉办公室装修公司-展厅装修_湖北今泰装饰工程有限公司官网_今泰装饰 | 金属网帘|金属帘|装饰网帘|金属环网|金属幕墙网|金属垂帘|金属扣帘-安平县名图金属丝网制品有限公司 | 配电箱自动生产线-配电箱生产线设备-山东炜桦智能 | 专业提供医疗器械,医疗设备,进口国产医疗设备,医疗耗材采购,医疗设备厂家等医疗器械信息-上海聚慕医疗器械有限公司 | 全玻璃视镜人孔-卡箍组件-常压单臂梁人孔-温州华强流体设备有限公司 | 苏子富春品牌馆 抚顺市富春农业科技开发有限公司 抚顺特色农产品 抚顺市特色馆 | 上海同田生物技术有限公司-逆流色谱供应商和应用技术服务商 | 专业液压对辊,双齿辊破碎机,沙子烘干机,制砂洗沙设备生产线厂家 - 巩义市吉宏机械 | 首页 菲律宾海运双清|马尼拉海运双清|广州菲律宾专线|广州通达供应链有限公司 |