﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-yegucheng</title><link>http://www.blogjava.net/yegucheng/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 14:21:24 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 14:21:24 GMT</pubDate><ttl>60</ttl><item><title>图片缩放功能的实现</title><link>http://www.blogjava.net/yegucheng/archive/2007/12/15/167964.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Sat, 15 Dec 2007 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/12/15/167964.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/167964.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/12/15/167964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/167964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/167964.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 图片缩放功能的实现（这里只实现了图片缩小功能，放大原理类似）&nbsp;&nbsp;<a href='http://www.blogjava.net/yegucheng/archive/2007/12/15/167964.html'>阅读全文</a><img src ="http://www.blogjava.net/yegucheng/aggbug/167964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-12-15 16:06 <a href="http://www.blogjava.net/yegucheng/archive/2007/12/15/167964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>weblogic配置sql server数据源，不能将 JDBC 存储配置为使用配置为支持全局事务的 JDBC 数据源</title><link>http://www.blogjava.net/yegucheng/archive/2007/12/07/166156.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Fri, 07 Dec 2007 13:36:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/12/07/166156.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/166156.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/12/07/166156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/166156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/166156.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在weblogic中，不能将 JDBC 存储配置为使用配置为支持全局事务的 JDBC 数据源&nbsp;&nbsp;<a href='http://www.blogjava.net/yegucheng/archive/2007/12/07/166156.html'>阅读全文</a><img src ="http://www.blogjava.net/yegucheng/aggbug/166156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-12-07 21:36 <a href="http://www.blogjava.net/yegucheng/archive/2007/12/07/166156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>笔记本win 2003系统下读卡器驱动</title><link>http://www.blogjava.net/yegucheng/archive/2007/11/11/159736.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Sun, 11 Nov 2007 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/11/11/159736.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/159736.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/11/11/159736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/159736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/159736.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很多笔记本的读卡器，在2003下都不能识别，使用上面的驱动可以解决这一问题<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/yegucheng/archive/2007/11/11/159736.html'>阅读全文</a><img src ="http://www.blogjava.net/yegucheng/aggbug/159736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-11-11 15:28 <a href="http://www.blogjava.net/yegucheng/archive/2007/11/11/159736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Collections.emptyList()生成的List不支持add方法</title><link>http://www.blogjava.net/yegucheng/archive/2007/10/29/156639.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Mon, 29 Oct 2007 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/10/29/156639.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/156639.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/10/29/156639.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/156639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/156639.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用Collections.emptyList()生成的List不支持add方法&nbsp;&nbsp;<a href='http://www.blogjava.net/yegucheng/archive/2007/10/29/156639.html'>阅读全文</a><img src ="http://www.blogjava.net/yegucheng/aggbug/156639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-10-29 12:28 <a href="http://www.blogjava.net/yegucheng/archive/2007/10/29/156639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Java API操作文件的字符集</title><link>http://www.blogjava.net/yegucheng/archive/2007/10/26/156032.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Fri, 26 Oct 2007 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/10/26/156032.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/156032.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/10/26/156032.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/156032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/156032.html</trackback:ping><description><![CDATA[<p>笔者的场景是这样的，笔者使用code smith作为代码生成工具，并在Eclipse中做插件开发，code smith天生<br />
对GB的支持比较弱，只能生成UTF-8编码，这在Eclipse开发的过程中不会存在问题，但是在使用Eclipse的导出<br />
功能时，Eclipse底层使用ANT的执行方式，ANT的默认字符集默认使用当前系统的字符集，这时在编译导出的时候，<br />
会出现字符无法识别的问题，导致导出或者打包失败。<br />
&nbsp;一种方式可以改变Eclipse工程的默认字符集，以及自动生成的ant配置文件中字符集的配置，这对于单个工程是有<br />
效的，但处理工程间依赖时，被依赖的工程同样会出现字符集问题，即使被依赖工程设定ant的字符集。<br />
&nbsp;另一种方式，是手工转换，讲UTF-8的字符集转换为GBK的，微软的网站提供了一个批量转换工具，但是在转换之后，<br />
文档的最前面还会有可能存在多于字符，并导致ant打包失败<br />
&nbsp;最后，没办法自己写了一个字符集转换工具，因为是自己用，所以够用就行，下面是转换部分的代码，实现UTF8到<br />
GBK的转换，其他转换可以对代码稍作修改。</p>
<p>&nbsp;<br />
import org.apache.commons.lang.ArrayUtils;</p>
<p>public class EncodeRepairTool {<br />
&nbsp;public static final byte[] bPre = "EFBBBF".getBytes();<br />
&nbsp;private int i = 0;</p>
<p>&nbsp;/**<br />
&nbsp; * @param args<br />
&nbsp; */<br />
&nbsp;public static void main(String[] args) {&nbsp;&nbsp;<br />
&nbsp;&nbsp;String path = "D:\\eclipse-dev-3.3\\workspace";<br />
&nbsp;&nbsp;File file = new File(path);<br />
&nbsp;&nbsp;EncodeRepairTool scanner = new EncodeRepairTool();<br />
&nbsp;&nbsp;scanner.scanFolder(file);</p>
<p>&nbsp;}</p>
<p>&nbsp;</p>
<p>&nbsp;public void scanFolder(File file) {<br />
&nbsp;&nbsp;if (file.isDirectory()) {<br />
&nbsp;&nbsp;&nbsp;File[] files = file.listFiles();<br />
&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; files.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;scanFolder(files[i]);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;} else if (file.getName().endsWith(".java")) {<br />
&nbsp;&nbsp;&nbsp;removePreCode(file);<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;private void removePreCode(File file) {<br />
&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;FileInputStream fis = new FileInputStream(file);<br />
&nbsp;&nbsp;&nbsp;int size = fis.available();<br />
&nbsp;&nbsp;&nbsp;if (size &lt; 24) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;i ++ ;<br />
&nbsp;&nbsp;&nbsp;byte[] bs = new byte[size];<br />
&nbsp;&nbsp;&nbsp;fis.read(bs);<br />
&nbsp;&nbsp;&nbsp;byte[] tbs = ArrayUtils.subarray(bs, 0, 3);<br />
&nbsp;&nbsp;&nbsp;byte[] tbs1 = new byte[] { new Integer(0xEF).byteValue(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Integer(0xBB).byteValue(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Integer(0xBF).byteValue() };<br />
&nbsp;&nbsp;&nbsp;boolean bol = false;<br />
&nbsp;&nbsp;&nbsp;if (tbs[0] == tbs1[0] &amp;&amp; tbs[1] == tbs1[1] &amp;&amp; tbs[2] == tbs1[2]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;bol = true;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;fis.close();<br />
&nbsp;&nbsp;&nbsp;if (!bol) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("&nbsp; " + i + " : " + file.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;tbs = bs;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("**" + i + " : " + file.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;tbs = ArrayUtils.subarray(bs, 3, size);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;InputStreamReader reader = new InputStreamReader(new ByteArrayInputStream(tbs), "UTF-8");<br />
&nbsp;&nbsp;&nbsp;BufferedReader br = new BufferedReader(reader);<br />
&nbsp;&nbsp;&nbsp;StringBuffer buffer = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;String s = br.readLine();<br />
&nbsp;&nbsp;&nbsp;while (s != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;buffer.append(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;buffer.append("\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;s =&nbsp; br.readLine();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;reader.close();<br />
&nbsp;&nbsp;&nbsp;byte[] nbs = buffer.toString().getBytes("GBK");&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;FileOutputStream fos = new FileOutputStream(file);<br />
&nbsp;&nbsp;&nbsp;fos.write(nbs);<br />
&nbsp;&nbsp;&nbsp;fos.flush();<br />
&nbsp;&nbsp;&nbsp;fos.close();<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;} catch (FileNotFoundException e) {<br />
&nbsp;&nbsp;&nbsp;// TODO 自动生成 catch 块<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;} catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;// TODO 自动生成 catch 块<br />
&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;}</p>
<p>}<br />
</p>
<img src ="http://www.blogjava.net/yegucheng/aggbug/156032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-10-26 10:01 <a href="http://www.blogjava.net/yegucheng/archive/2007/10/26/156032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用apche的net包操作serv-U和x-light的细微区别</title><link>http://www.blogjava.net/yegucheng/archive/2007/10/26/156008.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Fri, 26 Oct 2007 01:08:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/10/26/156008.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/156008.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/10/26/156008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/156008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/156008.html</trackback:ping><description><![CDATA[在使用apache的net包处理Serv-U和x-lighgt时遇到的几点不同<br />
进入一个空目录：<br />
&nbsp;在serv-U下，调用fTPClient.changeWorkingDirectory("")方法没有任何问题(指向一个空的目录)<br />
&nbsp;在x-light下，调用方法，会返回501信息<br />
当下载完文件后：<br />
&nbsp;使用 fTPClient.retrieveFileStream(url)方法下载文件，在serv-U下，可以直接下载下一个文件<br />
&nbsp;但是在x-light下，调用 fTPClient.retrieveFileStream(url)方法后，<br />
&nbsp;必须执行 fTPClient.completePendingCommand()方法，关闭当前下载操作，<br />
&nbsp;才能执行下一个下载任务（在net包的API中有相关的规定）。<br />
&nbsp;
<img src ="http://www.blogjava.net/yegucheng/aggbug/156008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-10-26 09:08 <a href="http://www.blogjava.net/yegucheng/archive/2007/10/26/156008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在使用TAB型的属性页时，设定Section标题的方法</title><link>http://www.blogjava.net/yegucheng/archive/2007/04/02/107992.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Mon, 02 Apr 2007 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/04/02/107992.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/107992.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/04/02/107992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/107992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/107992.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在使用TAB型的属性页时，设定Section标题的方法&nbsp;&nbsp;<a href='http://www.blogjava.net/yegucheng/archive/2007/04/02/107992.html'>阅读全文</a><img src ="http://www.blogjava.net/yegucheng/aggbug/107992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-04-02 15:36 <a href="http://www.blogjava.net/yegucheng/archive/2007/04/02/107992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单查找开源资源源码的方法</title><link>http://www.blogjava.net/yegucheng/archive/2007/03/30/107401.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Fri, 30 Mar 2007 01:28:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/03/30/107401.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/107401.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/03/30/107401.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/107401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/107401.html</trackback:ping><description><![CDATA[    经常使用开源产品,开源项目的升级又非常的快,到不同的网站查找源代码经常是很费时的事情,虽然不难，但是很是琐碎。<br />    最近在看一篇介绍maven的文档的时候,看到一个很不错的网站:www.ibiblio.org,这儿包含了几乎你用到的所有的开源项目,而且提供maven方式的下载。<br />    当然,在平时的使用时,不一定必须使用maven来构建,那就直接手工去找吧，可以在google中输入如下的字符串(site:www.ibiblio.org maven2 xxx),就可以在该网站找到自己要的开源产品的jar和源码,其中xxx代表开源产品的名字,例如要找log4j,可以输入:site:www.ibiblio.org maven2 log4j。<img src ="http://www.blogjava.net/yegucheng/aggbug/107401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-03-30 09:28 <a href="http://www.blogjava.net/yegucheng/archive/2007/03/30/107401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMF模型解析的策略分析</title><link>http://www.blogjava.net/yegucheng/archive/2007/03/07/102372.html</link><dc:creator>yegucheng</dc:creator><author>yegucheng</author><pubDate>Wed, 07 Mar 2007 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/yegucheng/archive/2007/03/07/102372.html</guid><wfw:comment>http://www.blogjava.net/yegucheng/comments/102372.html</wfw:comment><comments>http://www.blogjava.net/yegucheng/archive/2007/03/07/102372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yegucheng/comments/commentRss/102372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yegucheng/services/trackbacks/102372.html</trackback:ping><description><![CDATA[
		<p>今天看到两种使用EMF解析.xml为EMF模型的策略：<br />一种是通过如下代码：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">IFileEditorInput modelFile </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> (IFileEditorInput)getEditorInput();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />URI resourceURI </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> URI.createPlatformResourceURI(modelFile.getFile().getFullPath().toString());;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span id="Codehighlighter1_227_363_Open_Text">
						<span style="COLOR: #000000">resource </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> editingDomain.getResourceSet().getResource(resourceURI, </span>
						<span style="COLOR: #0000ff">true</span>
						<span style="COLOR: #000000">);</span>
				</span>
		</div>上面这种方式会引用一个AdapterFactoryEditingDomain类，但我们基于模型做编辑器时，有时并不需要用这个类，例如GEF，它具有自身的EditorDomain。<br /><br />另外一种方式是使用EMF模型自动生成的Process,该类一般在模型的Util包下面，引用代码如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">IFileEditorInput modelFile </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (IFileEditorInput)getEditorInput();        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />XMLProcessor processor </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> DesignXMLProcessor();            <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> resource </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> processor.load(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> InputSource(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> InputStreamReader(modelFile.getFile().getContents(), </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GBK</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)), </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span></div><br />其实，对于EMF而言，上面两种解释方式，归根到底都需要EMF获得 业务模型相关的解析器，对于第一种方式，EMF是如何获取到业务模型的解析器呢？主要是通过扩展的方式，扩展定义在模型的plugin.xml中，代码片断如下图所示：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">extension point</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">org.eclipse.emf.ecore.extension_parser</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">parser <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">design</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />       </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.neusoft.report.design.util.DesignResourceFactoryImpl</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">extension</span><span style="COLOR: #000000">&gt;</span></div><br />这样，解析.xml文件时，EMF从ResourceFactory注册中，根据相应的type，获取解析器（DesignResourceFactoryImpl），完成解析。<img src ="http://www.blogjava.net/yegucheng/aggbug/102372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yegucheng/" target="_blank">yegucheng</a> 2007-03-07 13:08 <a href="http://www.blogjava.net/yegucheng/archive/2007/03/07/102372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>