﻿<?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-Kyle's Space-随笔分类-Java Skills Learning and Sharing</title><link>http://www.blogjava.net/xiaodong0417/category/51480.html</link><description>Java Study</description><language>zh-cn</language><lastBuildDate>Thu, 04 Apr 2013 06:00:58 GMT</lastBuildDate><pubDate>Thu, 04 Apr 2013 06:00:58 GMT</pubDate><ttl>60</ttl><item><title>中文和ASCII互转</title><link>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 03 Apr 2013 13:16:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/397375.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/397375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/397375.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>我们在开发使时常会用到资源文件，这可能是为了多语言、国际化的需要，也可能是使用了国外开源项目的原因，这就需要中文转ascii将中文转换为</span><span>ASCII</span> <span>编码，或者将</span> <span>ASCII</span> <span>转换为中文，那么我们就可以使用</span> <span>JDK</span> <span>自带的转换工具</span> <span>native2ascii</span> <span>。</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>for example</span><span>：</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>No1</span><span>、中文转换为</span> <span>ASCII</span> <span>编码</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>步骤：</span><span>1</span> <span>、在</span> <span>D</span> <span>盘新建</span><span> </span> <span>chinese.txt<span>&nbsp; </span></span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>parameter.project.title=</span><span>这是中文</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>2</span><span>、在环境变量中设置好</span> <span>JDK</span> <span>路径</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>3</span><span>、进入</span> <span>dos</span> <span>控制台，并进入</span> <span>D</span> <span>盘目录</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>4</span><span>、输入命令：</span> <span>native2ascii <span> </span> -encoding <span> </span> gb2312 <span> </span> chinese.txt<span>&nbsp; </span>ascii.txt<span>&nbsp; </span></span><span>回车</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>那么在</span><span>D</span> <span>盘目录下生成</span> <span>ascii.txt </span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;">parameter.project.title=\u8fd9\u662f\u4e2d\u6ascii码 中文587</span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>No1</span><span>、</span> <span>ASCII</span> <span>编码转换为中文</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>步骤：</span><span>1</span> <span>、在</span> <span>D</span> <span>盘新建</span><span> </span> <span>ascii.txt<span>&nbsp; </span></span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;">parameter.project.title=\u8fd9\u662f\u4e2d\u6ascii码 中文587</span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>2</span><span>、在环境变量中设置好</span> <span>JDK</span> <span>路径</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>3</span><span>、进入</span> <span>dos</span> <span>控制台，并进入</span> <span>D</span> <span>盘目录</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>4</span><span>、输入命令：</span> <span>native2ascii <span> </span> -reverse <span> </span> -encoding <span> </span> UTF8 <span> </span> ascii.txt<span>&nbsp; </span>chinese.txt<span> </span></span><span>回车</span> </span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>那么在</span><span>D</span> <span>盘目录下生成</span> <span>chinese.txt </span><span>文件，内容为：</span></span></span></p><p style="margin: 0cm 0cm 0pt; text-indent: 24pt;"><span style="font-size: 12px;"><span style="font-size: 12px;"><span>parameter.project.title=</span><span>这是中文</span> </span></span></p> <img src ="http://www.blogjava.net/xiaodong0417/aggbug/397375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2013-04-03 21:16 <a href="http://www.blogjava.net/xiaodong0417/archive/2013/04/03/397375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java编程技巧之final</title><link>http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Mon, 15 Oct 2012 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/389614.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/389614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/389614.html</trackback:ping><description><![CDATA[<hr style="font-family: 微软雅黑; font-size: 18px; line-height: normal; " /><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关键词final在Java中有多重用途，既可被用于instance变量、static变量</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">也可用于classes或methods，表示不允许客户覆写它们。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp; &nbsp; &nbsp; &nbsp; 当一个方法被声明成final，在两个领域中显得有位重要：</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "><ol><li>class设计</li><li>运行期性能</li></ol><div>&nbsp; &nbsp; &nbsp; &nbsp; 在程序设计里，有时我们不希望我们的方法被重写或覆盖，final关键字保证了这一点。</div></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">final关键字是怎么影响性能的呢？</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp; &nbsp; &nbsp; &nbsp; 当我们的方法被声明成static，final和private， 此方法将成为Inlining（内联函数)的候选者。此类方法可以在编译期被静态决议（staticallyresolved），而不需要动态决议(dynamicResolution)。以方法本体（methodbody）替换方法调用（methodcall）会使代码执行速度更快。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;将方法声明为static、final和private会带来一些缺点：这样的方法无法通过Subclassing(子类化)进行扩展。这就束缚了derived class通过class函数做事情的机会。inlined方法只有在被多次调用的情况下，才会获得令人侧目的性能提升。这是因为当一个方法被inline后，就不再需要负担方法调用的额外开销。因此，方法被调用愈多次，节省就愈多。</div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; "></div><div style="font-family: 微软雅黑; font-size: 18px; line-height: normal; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不过inlining也可能使你的代码体积变大。如果这个方法有许多调用点，.class文件的体积便会膨胀，这是因为原本只需存储一份的函数码，由于inline而在所有调用点被复制了一份。</div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/389614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2012-10-15 22:23 <a href="http://www.blogjava.net/xiaodong0417/archive/2012/10/15/389614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java NIO 简单经典示例</title><link>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Wed, 26 Sep 2012 14:40:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/388634.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/388634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/388634.html</trackback:ping><description><![CDATA[Java NIO 主要是Channel， SelectionKey, Selector 三个类之间的关系，下面的例子就是演示如果使用NIO来处理请求的：<span style="color: #008000; background-color: #eeeeee; font-size: 13px; ">/**</span><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><font color="#008000">&nbsp;*&nbsp;</font><br /><font color="#008000">&nbsp;</font><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">package</span>&nbsp;dongzi.nio.exercise.nio;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.IOException;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.net.InetSocketAddress;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.net.ServerSocket;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.ByteBuffer;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.ClosedChannelException;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.SelectionKey;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.Selector;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.ServerSocketChannel;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.nio.channels.SocketChannel;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.util.Iterator;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;kyle<br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;SelectSockets&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;PORT_NUMBER&nbsp;=&nbsp;1234;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;SelectSockets().go(args);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;go(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;port&nbsp;=&nbsp;PORT_NUMBER;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(args.length&nbsp;&gt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port&nbsp;=&nbsp;Integer.parseInt(args[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Listening&nbsp;port:&nbsp;"&nbsp;+&nbsp;PORT_NUMBER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Selector&nbsp;selector&nbsp;=&nbsp;Selector.open();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startServer(port,&nbsp;selector);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(<span style="color: #0000FF; ">true</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;n&nbsp;=&nbsp;selector.select();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(n&nbsp;==&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator&nbsp;it&nbsp;=&nbsp;selector.selectedKeys().iterator();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(it.hasNext())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectionKey&nbsp;key&nbsp;=&nbsp;(SelectionKey)&nbsp;it.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(key.isAcceptable())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocketChannel&nbsp;server&nbsp;=&nbsp;(ServerSocketChannel)&nbsp;key<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.channel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SocketChannel&nbsp;channel&nbsp;=&nbsp;server.accept();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registerChannel(selector,&nbsp;channel,&nbsp;SelectionKey.OP_READ);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sayHello(channel);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(key.isReadable())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readDataFromChannel(key);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it.remove();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;ByteBuffer&nbsp;buffer&nbsp;=&nbsp;ByteBuffer.allocate(1024);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;readDataFromChannel(SelectionKey&nbsp;key)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SocketChannel&nbsp;channel&nbsp;=&nbsp;(SocketChannel)&nbsp;key.channel();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;((count&nbsp;=&nbsp;channel.read(buffer))&nbsp;&gt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.flip();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(buffer.hasRemaining())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(buffer.get());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(count&nbsp;&lt;&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;sayHello(SocketChannel&nbsp;channel)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(channel&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteBuffer&nbsp;buffer&nbsp;=&nbsp;ByteBuffer.wrap("Hi,&nbsp;there&nbsp;\r\n".getBytes());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.flip();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.write(buffer);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;registerChannel(Selector&nbsp;selector,&nbsp;SocketChannel&nbsp;channel,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;opRead)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(channel&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.configureBlocking(<span style="color: #0000FF; ">false</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;channel.register(selector,&nbsp;opRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;startServer(<span style="color: #0000FF; ">int</span>&nbsp;port,&nbsp;Selector&nbsp;selector)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClosedChannelException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocketChannel&nbsp;serverChannel&nbsp;=&nbsp;ServerSocketChannel.open();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverChannel.configureBlocking(<span style="color: #0000FF; ">false</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocket&nbsp;serverSocket&nbsp;=&nbsp;serverChannel.socket();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverSocket.bind(<span style="color: #0000FF; ">new</span>&nbsp;InetSocketAddress(port));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverChannel.register(selector,&nbsp;SelectionKey.OP_ACCEPT);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/388634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2012-09-26 22:40 <a href="http://www.blogjava.net/xiaodong0417/archive/2012/09/26/388634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jibx简单示例</title><link>http://www.blogjava.net/xiaodong0417/archive/2011/11/28/365010.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Mon, 28 Nov 2011 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2011/11/28/365010.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/365010.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2011/11/28/365010.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/365010.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/365010.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; ">首先从 JiBX 网站下载 JiBX，当前最新版本是 beta 3。解开下载的 zip 文件，里面有一个 lib 目录，包含了 bcel.jar, jibx-bind.jar, jibx-extras.jar, jibx-run.jar, xpp3.jar 五个 jar 文件。bcel.jar, jibx-bind.jar 只有在 binding compiler 的时候才用得到。jibx-extras.jar 是一个可选的工具包，里面有一些测试和验证的工具类。&nbsp;<br />
1.定义一个我们将要处理 XML 文件，文件名为 data.xml，内容如下：&nbsp;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">customer</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">person</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">cust-num</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">123456789</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">cust-num</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">first-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">John</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">first-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">last-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Smith</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">last-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">person</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">street</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">12345&nbsp;Happy&nbsp;Lane</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">street</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">city</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Plunk</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">city</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">state</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">WA</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">state</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">zip</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">98059</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">zip</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">phone</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">888.555.1234</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">phone</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">customer</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;</span></div>
这个 XML 文件非常简单，共有十个元素，没有属性。根元素 customer 有 person, street, city, state, zip, phone 六个子元素。其中元素 person 有 cust-num, first-name, last-name 三个子元素。&nbsp;<br />
2.接着定义两个 Java 类 Customer 和 Person，也采用最简单的方式，用对象的域值对应元素，内容如下：&nbsp;<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Customer&nbsp;{&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Person&nbsp;person;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;street;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;city;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;state;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Integer&nbsp;zip;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;phone;&nbsp;<br />
}&nbsp;<br />
<br />
</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Person&nbsp;{&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;customerNumber;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;firstName;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;lastName;&nbsp;<br />
}&nbsp;</span></div>
这个两个类没有任何方法，够简单吧！或许你已经看出来了，Customer 类的七个 field 对应的是 XML 文件中 customer 元素的七个子元素。Person 类的三个 field 对应的是 person 元素的三个子元素。在 Person 类的 field 的名称并不是和 person 元素的子元素名称完全相等，这是遵守 Java 编程规范 field 命名的需要，虽然不相等，但这不重要，可以在绑定定义文挡中把它们一一对应起来。&nbsp;<br />
3.绑定定义文挡&nbsp;<br />
绑定定义文挡是依据绑定定义规范将 XML 数据和 Java 对象绑定的 XML 文挡。文件名为 binding.xml，内容如下：&nbsp;<br />
<br />
<br />
binding.xml 文件中的 name 和 field 属性分别将 XML 中的元素和 Java 对象中的 field 一一对应并绑定起来。&nbsp;<br />
<br />
&lt;mapping name="customer" class="Customer"&gt;&nbsp;<br />
mapping 元素的 name 和 class 属性将 customer 根元素和 Customer 类绑定在一起。&nbsp;<br />
<br />
&lt;structure name="person" field="person"&gt;&nbsp;<br />
<br />
public Person person;&nbsp;<br />
上面两行定义了 person 是 Customer 的 field，同时也把 person 元素和 person 类绑定在一起。&nbsp;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">binding</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mapping&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="customer"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="Customer"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">structure&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="person"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="person"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="cust-num"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="customerNumber"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="first-name"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="firstName"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value </span><font  color="#FF0000">name</font><span style="color: #0000FF; ">="last-name"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="lastName"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">structure</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="street"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="street"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="city"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="city"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="state"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="state"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="zip"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="zip"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="phone"</span><span style="color: #FF0000; ">&nbsp;field</span><span style="color: #0000FF; ">="phone"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br />
</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">binding</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;</span></div>
4.执行 Binding Compiler 过程&nbsp;<br />
以下命令是在 Linux 下执行，如果是 Windows 平台请转换成相应的命令&nbsp;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">#javac&nbsp;Person.java&nbsp;<br />
#javac&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">classpath&nbsp;.&nbsp;Customer.java&nbsp;<br />
#java&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">jar&nbsp;lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">jibx</span><span style="color: #000000; ">-</span><span style="color: #000000; ">bind.jar&nbsp;binding.xml&nbsp;</span></div>
执行完后，在当前目录多了四个 class 文件，分别是 Person.class, Customer.class, JiBX_bindingCustomer_access.class, JiBX_bindingFactory.class。&nbsp;<br />
5.执行 binding runtime 过程&nbsp;<br />
接着写一个简单的读取 data.xml 测试程序 Test.java，内容如下：&nbsp;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.FileInputStream;&nbsp;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.FileNotFoundException;&nbsp;<br />
<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.jibx.runtime.JiBXException;&nbsp;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.jibx.runtime.IBindingFactory;&nbsp;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.jibx.runtime.BindingDirectory;&nbsp;<br />
</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.jibx.runtime.IUnmarshallingContext;&nbsp;<br />
<br />
</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Test&nbsp;{&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;IBindingFactory&nbsp;bfact&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;BindingDirectory.getFactory(Customer.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;IUnmarshallingContext&nbsp;uctx&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;bfact.createUnmarshallingContext();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Customer&nbsp;customer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(Customer)uctx.unmarshalDocument(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;FileInputStream(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">data.xml</span><span style="color: #000000; ">"</span><span style="color: #000000; ">),&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Person&nbsp;person&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;customer.person;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">cust-num:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;person.customerNumber);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">first-name:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;person.firstName);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">last-name:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;person.lastName);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">street:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;customer.street);&nbsp;<br />
&nbsp;&nbsp;}</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">(FileNotFoundException&nbsp;e){&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e.toString());&nbsp;<br />
&nbsp;&nbsp;}</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">(JiBXException&nbsp;e){&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(e.toString());&nbsp;<br />
&nbsp;&nbsp;}&nbsp;<br />
}&nbsp;<br />
}&nbsp;</span></div>
编译并运行这个测试程序&nbsp;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">#javac&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">classpath&nbsp;.:lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">jibx</span><span style="color: #000000; ">-</span><span style="color: #000000; ">run.jar&nbsp;Test.java&nbsp;<br />
#java&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">cp&nbsp;.:lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">jibx</span><span style="color: #000000; ">-</span><span style="color: #000000; ">run.jar:lib</span><span style="color: #000000; ">/</span><span style="color: #000000; ">xpp3.jar&nbsp;Test&nbsp;</span></div>
程序运行的结果是&nbsp;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000; ">cust</span><span style="color: #000000; ">-</span><span style="color: #000000; ">num:</span><span style="color: #000000; ">123456789</span><span style="color: #000000; ">&nbsp;<br />
first</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name:John&nbsp;<br />
last</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name:Smith&nbsp;<br />
street:</span><span style="color: #000000; ">12345</span><span style="color: #000000; ">&nbsp;Happy&nbsp;Lane &nbsp;</span></div>
</span></div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/365010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2011-11-28 17:16 <a href="http://www.blogjava.net/xiaodong0417/archive/2011/11/28/365010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Object 序列化成XML以及XML反序列化成Java Object</title><link>http://www.blogjava.net/xiaodong0417/archive/2011/07/04/353665.html</link><dc:creator>王树东</dc:creator><author>王树东</author><pubDate>Mon, 04 Jul 2011 12:55:00 GMT</pubDate><guid>http://www.blogjava.net/xiaodong0417/archive/2011/07/04/353665.html</guid><wfw:comment>http://www.blogjava.net/xiaodong0417/comments/353665.html</wfw:comment><comments>http://www.blogjava.net/xiaodong0417/archive/2011/07/04/353665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaodong0417/comments/commentRss/353665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaodong0417/services/trackbacks/353665.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div><span style="color: #464646; font-family: simsun; ">package org.sl.bean;<br />
<br />
import java.beans.XMLDecoder;<br />
import java.beans.XMLEncoder;<br />
import java.io.BufferedInputStream;<br />
import java.io.BufferedOutputStream;<br />
import java.io.ByteArrayInputStream;<br />
import java.io.ByteArrayOutputStream;<br />
import java.io.IOException;<br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import java.io.Serializable;<br />
<br />
public class ObjectXmlSerial {<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;public static void main(String[] args) throws IOException{<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;UserBean user = new UserBean();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;OtherUserInfoBean otherUserInfo = new OtherUserInfoBean();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;otherUserInfo.setAddress("汉字");<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;otherUserInfo.setEmail("test@test.com");<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;user.setName("hello");<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;user.setPassword("world");<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;user.setOtherUserInfo(otherUserInfo);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;BufferedOutputStream bufferOut = new BufferedOutputStream(byteArrayOut);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;writeObjectToXML(bufferOut, user);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;byte[] bys = byteArrayOut.toByteArray();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;byteArrayOut.close();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;bufferOut.close();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;ByteArrayInputStream byteArrayIn = new ByteArrayInputStream(bys);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;BufferedInputStream bufferIn = new BufferedInputStream(byteArrayIn);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;UserBean user1 = readObjectFromXML(bufferIn);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;byteArrayIn.close();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;bufferIn.close();&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;System.out.println(user1.getName());<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;System.out.println(user1.getOtherUserInfo().getAddress());<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;public static &lt;T extends Serializable&gt; void writeObjectToXML(OutputStream out, T obj){<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;XMLEncoder xmlEncoder = null;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;try{<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;xmlEncoder = new XMLEncoder(out);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;xmlEncoder.writeObject(obj);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}finally{<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;if(null != xmlEncoder)<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;xmlEncoder.close();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;@SuppressWarnings("unchecked")<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;public static &lt;T extends Serializable&gt; T readObjectFromXML(InputStream in){<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;T obj = null;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;XMLDecoder xmlDecoder = null;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;try{<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;xmlDecoder = new XMLDecoder(in);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;obj = (T) xmlDecoder.readObject();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}finally{<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;if(null != xmlDecoder)<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;xmlDecoder.close();<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;return obj;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}<br />
}<br />
</span></div><img src ="http://www.blogjava.net/xiaodong0417/aggbug/353665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaodong0417/" target="_blank">王树东</a> 2011-07-04 20:55 <a href="http://www.blogjava.net/xiaodong0417/archive/2011/07/04/353665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>