﻿<?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-少年阿宾-随笔分类-JDOM</title><link>http://www.blogjava.net/stevenjohn/category/52209.html</link><description>那些青春的岁月</description><language>zh-cn</language><lastBuildDate>Wed, 15 Aug 2012 01:55:51 GMT</lastBuildDate><pubDate>Wed, 15 Aug 2012 01:55:51 GMT</pubDate><ttl>60</ttl><item><title>[转载] JDom输出UTF-8的XML出现中文乱码完美解决</title><link>http://www.blogjava.net/stevenjohn/archive/2012/08/15/385506.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Wed, 15 Aug 2012 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/08/15/385506.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/385506.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/08/15/385506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/385506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/385506.html</trackback:ping><description><![CDATA[完美的解决方法从辟谣开始： <br />1）JDOM是否生成UTF-8的文件与Format是否设置无关，只有输出其他字符编码才需要设置，见下面的注释。 <br />2）JDOM输出UTF-8文件乱码的根本原因并非在JDOMAPI，而是在JDK。 <br />具体描述： <br />&nbsp;&nbsp;&nbsp; JDOM的输出类XMLOutputter有两个output接口，除了都具有一个Document参数外，分别接受Writer和 OutputStream参数。 <br />&nbsp;&nbsp;&nbsp; 这给我们一个错觉，两个接口可以任意使用。 <br />&nbsp;&nbsp;&nbsp; 首先我们用output(doc,System.out)来做测试，此时得到乱码， <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后我们改为output(doc,new PrintWriter(System.out))来测试，输出不是乱码， <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说在控制台的时候一定要用一个Writer接口包装一下。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 然后我们用output(doc,new FileWriter(path))来做测试，结果却得到乱码， <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后我们改为output(doc,new FileOutputStream(path))来测试，输出不是乱码， <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说在输出文件的时候一定要用一个OutputStream接口包装一下。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 疯了吧？呵呵，很搞笑是吧。经过到JDOM的源码中调试，发现没有任何问题，问题出在了JDK里面。 <br />JDK内的对应接口处理： <br />1）PrintWriter类有参数为OutputStream的构造方法，因此可以从System.out包装到PrintWriter <br />2）FileWriter类没有参数为OutputStream的构造方法，因此不能从FileOutputStream包装到 FileWriter <br />3）如果PrintWriter类用了参数为Writer的构造方法（Writer实现为FileWriter），最后输出也是乱码 <br />4）如果用一个FileOutputStream来包装一个控制台输出，也是乱码 <br />因此，对于JDK内的各种输出体系，各种InputStream、OutputStream、reader和writer要充分认识，否则极容易出现一些意想不到的问题。 <br /><br /><br /><img src ="http://www.blogjava.net/stevenjohn/aggbug/385506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-08-15 09:34 <a href="http://www.blogjava.net/stevenjohn/archive/2012/08/15/385506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM 生成和解析XML(二)</title><link>http://www.blogjava.net/stevenjohn/archive/2012/07/20/383613.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Fri, 20 Jul 2012 09:37:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/07/20/383613.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/383613.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/07/20/383613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/383613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/383613.html</trackback:ping><description><![CDATA[<p>//JDOM xml的生成<br />import java.io.ByteArrayOutputStream;</p>
<p>import org.jdom2.Document;<br />import org.jdom2.Element;<br />import org.jdom2.output.XMLOutputter;</p>
<p><br />public class CreateJdom {<br />&nbsp;public static String createXml(){<br />&nbsp;&nbsp;Element root=new Element("cupMobiles");<br />&nbsp;&nbsp;Document doc=new Document(root);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element cupMobile=new Element("cupMobile");<br />&nbsp;&nbsp;cupMobile.setAttribute("application", "UPNoCard");<br />&nbsp;&nbsp;cupMobile.setAttribute("version", "1.01");<br />&nbsp;&nbsp;root.addContent(cupMobile);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element transaction=new Element("transaction");<br />&nbsp;&nbsp;transaction.setAttribute("type","Purchase.PMReq");<br />&nbsp;&nbsp;cupMobile.addContent(transaction);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element submitTime=new Element("submitTime");<br />&nbsp;&nbsp;submitTime.setText("20111207111641");<br />&nbsp;&nbsp;transaction.addContent(submitTime);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element order=new Element("order");<br />&nbsp;&nbsp;order.setAttribute("id", "12347733");<br />&nbsp;&nbsp;transaction.addContent(order);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element merchant=new Element("merchant");<br />&nbsp;&nbsp;merchant.setAttribute("id","303290047228001");<br />&nbsp;&nbsp;transaction.addContent(merchant);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element accountNumber1=new Element("accountNumber1");<br />&nbsp;&nbsp;accountNumber1.setText("6224130665233518");<br />&nbsp;&nbsp;transaction.addContent(accountNumber1);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element transSerialNumber=new Element("transSerialNumber");<br />&nbsp;&nbsp;transSerialNumber.setText("201162");<br />&nbsp;&nbsp;transaction.addContent(transSerialNumber);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element billAmount =new Element("billAmount");<br />&nbsp;&nbsp;billAmount.setAttribute("currency","156");<br />&nbsp;&nbsp;billAmount.setText("000000030231");<br />&nbsp;&nbsp;transaction.addContent(billAmount);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element settleDate=new Element("settleDate");<br />&nbsp;&nbsp;settleDate.setText("20111208");<br />&nbsp;&nbsp;transaction.addContent(settleDate);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;ByteArrayOutputStream byteRsp=new ByteArrayOutputStream();<br />&nbsp;&nbsp;XMLOutputter xmlOut=new XMLOutputter();<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;xmlOut.output(doc, byteRsp);<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;System.out.println(e.getMessage());<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return byteRsp.toString();<br />&nbsp;}<br />&nbsp;<br />&nbsp;<br />&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;<br />&nbsp;}<br />}<br /><br /><br /><br />//JDOM xml的生成的测试代码<br />import junit.framework.TestCase;</p>
<p>import org.junit.After;<br />import org.junit.Before;<br />import org.junit.Test;</p>
<p>public class CreateJdomTest extends TestCase{<br />&nbsp;@Before<br />&nbsp;public void setUp(){}<br />&nbsp;@After<br />&nbsp;public void tearDown(){}<br />&nbsp;@Test<br />&nbsp;public void testCreateJdom(){<br />&nbsp;&nbsp;String result=new CreateJdom().createXml();<br />&nbsp;&nbsp;System.out.println(result);<br />&nbsp;}<br />}<br /></p>
<p><br /><br /><br /><br /><br />//JDOM xml的解析以及解析的测试代码<br />import java.io.StringReader;<br />import java.util.Collections;<br />import java.util.HashMap;<br />import java.util.Iterator;<br />import java.util.List;<br />import java.util.Map;</p>
<p>import org.jdom2.Document;<br />import org.jdom2.Element;<br />import org.jdom2.input.SAXBuilder;<br />import org.xml.sax.InputSource;</p>
<p>public class ParseJdom {<br />&nbsp;public static Map&lt;String, String&gt; parseXml(String xml) {<br />&nbsp;&nbsp;Map&lt;String, String&gt; map = Collections<br />&nbsp;&nbsp;&nbsp;&nbsp;.synchronizedMap(new HashMap&lt;String, String&gt;());<br />&nbsp;&nbsp;StringReader reader = new StringReader(xml);<br />&nbsp;&nbsp;InputSource source = new InputSource(reader);<br />&nbsp;&nbsp;SAXBuilder sax = new SAXBuilder();<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;Document doc = sax.build(source);<br />&nbsp;&nbsp;&nbsp;Element root = doc.getRootElement();<br />//&nbsp;&nbsp;&nbsp;map.put(root.getName(), root.getValue());<br />//&nbsp;&nbsp;&nbsp;System.out.println("root=" + root.getName());<br />//&nbsp;&nbsp;&nbsp;System.out.println("root,s value=" + root.getValue());<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;Element cupMobile = null;<br />&nbsp;&nbsp;&nbsp;cupMobile = root.getChild("cupMobile");<br />//&nbsp;&nbsp;&nbsp;map.put(cupMobile.getName(), cupMobile.getValue());<br />&nbsp;&nbsp;&nbsp;String application=cupMobile.getAttributeValue("application");<br />&nbsp;&nbsp;&nbsp;map.put("application", application);<br />&nbsp;&nbsp;&nbsp;String version=cupMobile.getAttributeValue("version");<br />&nbsp;&nbsp;&nbsp;map.put("version", version);</p>
<p>&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;Element transaction = null;<br />&nbsp;&nbsp;&nbsp;transaction = cupMobile.getChild("transaction");<br />//&nbsp;&nbsp;&nbsp;map.put(transaction.getName(), transaction.getValue());<br />&nbsp;&nbsp;&nbsp;String type=transaction.getAttributeValue("type");<br />&nbsp;&nbsp;&nbsp;map.put("type", type);</p>
<p>&nbsp;&nbsp;&nbsp;Element submitTime = null;<br />&nbsp;&nbsp;&nbsp;submitTime = transaction.getChild("submitTime");<br />&nbsp;&nbsp;&nbsp;map.put(submitTime.getName(), submitTime.getValue());<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;Element order&nbsp; = null;<br />&nbsp;&nbsp;&nbsp;order = transaction.getChild("order");<br />//&nbsp;&nbsp;&nbsp;map.put(order.getName(), order.getValue());<br />&nbsp;&nbsp;&nbsp;String orderId=order.getAttributeValue("id");<br />&nbsp;&nbsp;&nbsp;map.put("orderId", orderId);</p>
<p>&nbsp;&nbsp;&nbsp;Element merchant&nbsp; = null;<br />&nbsp;&nbsp;&nbsp;merchant = transaction.getChild("merchant");<br />//&nbsp;&nbsp;&nbsp;map.put(merchant.getName(), merchant.getValue());<br />&nbsp;&nbsp;&nbsp;String merchantId=merchant.getAttributeValue("id");<br />&nbsp;&nbsp;&nbsp;map.put("merchantId", merchantId);</p>
<p>&nbsp;&nbsp;&nbsp;Element accountNumber1&nbsp; = null;<br />&nbsp;&nbsp;&nbsp;accountNumber1 = transaction.getChild("accountNumber1");<br />&nbsp;&nbsp;&nbsp;map.put(accountNumber1.getName(), accountNumber1.getValue());<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;Element transSerialNumber&nbsp; = null;<br />&nbsp;&nbsp;&nbsp;transSerialNumber = transaction.getChild("transSerialNumber");<br />&nbsp;&nbsp;&nbsp;map.put(transSerialNumber.getName(), transSerialNumber.getValue());<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;Element billAmount&nbsp; = null;<br />&nbsp;&nbsp;&nbsp;billAmount = transaction.getChild("billAmount");<br />&nbsp;&nbsp;&nbsp;map.put(billAmount.getName(), billAmount.getValue());<br />&nbsp;&nbsp;&nbsp;String currency=billAmount.getAttributeValue("currency");<br />&nbsp;&nbsp;&nbsp;map.put("currency", currency);<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;Element settleDate&nbsp; = null;<br />&nbsp;&nbsp;&nbsp;settleDate = transaction.getChild("settleDate");<br />&nbsp;&nbsp;&nbsp;map.put(settleDate.getName(), settleDate.getValue());<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;System.out.println(e.getMessage());<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return map;<br />&nbsp;}</p>
<p>&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;String xml = new CreateJdom().createXml();<br />&nbsp;&nbsp;Map&lt;String, String&gt; map = new ParseJdom().parseXml(xml);<br />&nbsp;&nbsp;Iterator it = map.entrySet().iterator();<br />&nbsp;&nbsp;while (it.hasNext()) {<br />&nbsp;&nbsp;&nbsp;Map.Entry&lt;String, String&gt; entry = (Map.Entry&lt;String, String&gt;) it<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.next();<br />&nbsp;&nbsp;&nbsp;System.out.println("key=" + entry.getKey());<br />&nbsp;&nbsp;&nbsp;System.out.println("Value=" + entry.getValue());<br />&nbsp;&nbsp;}</p>
<p>&nbsp;}<br />}<br /></p>
<p><br />&nbsp;</p> <img src ="http://www.blogjava.net/stevenjohn/aggbug/383613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-07-20 17:37 <a href="http://www.blogjava.net/stevenjohn/archive/2012/07/20/383613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM 创建和解析XML(一)</title><link>http://www.blogjava.net/stevenjohn/archive/2012/07/19/383529.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 19 Jul 2012 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/stevenjohn/archive/2012/07/19/383529.html</guid><wfw:comment>http://www.blogjava.net/stevenjohn/comments/383529.html</wfw:comment><comments>http://www.blogjava.net/stevenjohn/archive/2012/07/19/383529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stevenjohn/comments/commentRss/383529.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stevenjohn/services/trackbacks/383529.html</trackback:ping><description><![CDATA[<p>package org.litsoft.air.unionpay;</p>
<p>import java.io.ByteArrayOutputStream;</p>
<p>import org.jdom2.Document;<br />import org.jdom2.Element;<br />import org.jdom2.output.XMLOutputter;</p>
<p>public class CreateJdom {<br />&nbsp;/**<br />&nbsp; * 生成支付宝需要的XML格式，自己模拟测试支付接口的异步返回结果<br />&nbsp; * @return<br />&nbsp; */<br />&nbsp;public static String createXml(){<br />&nbsp;&nbsp;Element root=new Element("notify");<br />&nbsp;&nbsp;Document doc=new Document(root);<br />&nbsp;&nbsp;Element trade_status=new Element("trade_status");<br />&nbsp;&nbsp;trade_status.setText("TRADE_FINISHED");<br />&nbsp;&nbsp;root.addContent(trade_status);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element total_fee=new Element("total_fee");<br />&nbsp;&nbsp;total_fee.setText("0.90");<br />&nbsp;&nbsp;root.addContent(total_fee);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element subject=new Element("subject");<br />&nbsp;&nbsp;subject.setText("123465");<br />&nbsp;&nbsp;root.addContent(subject);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element out_trade_no=new Element("out_trade_no");<br />&nbsp;&nbsp;out_trade_no.setText("1118060201-7555");<br />&nbsp;&nbsp;root.addContent(out_trade_no);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element notify_reg_time=new Element("notify_reg_time");<br />&nbsp;&nbsp;notify_reg_time.setText("2010-11-1814:02:43.000");<br />&nbsp;&nbsp;root.addContent(notify_reg_time);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Element trade_no=new Element("trade_no");<br />&nbsp;&nbsp;trade_no.setText("2010111800209965");<br />&nbsp;&nbsp;root.addContent(trade_no);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;ByteArrayOutputStream byteRsp=new ByteArrayOutputStream();<br />&nbsp;&nbsp;XMLOutputter xmlOut=new XMLOutputter();<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;xmlOut.output(doc, byteRsp);<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;System.out.println(e.getMessage());<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;String temp=byteRsp.toString();<br />&nbsp;&nbsp;String result=temp.substring(temp.indexOf("&gt;")+1, temp.length());<br />&nbsp;&nbsp;return result.trim();<br />//&nbsp;&nbsp;return byteRsp.toString();<br />&nbsp;}<br />&nbsp;<br />&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;CreateJdom jdom=new CreateJdom();<br />&nbsp;&nbsp;String result=jdom.createXml();<br />&nbsp;&nbsp;System.out.println(result);<br />&nbsp;}</p>
<p>}<br /></p><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<p>package org.litsoft.air.unionpay;</p>
<p>import java.io.StringReader;<br />import java.util.Collections;<br />import java.util.HashMap;<br />import java.util.Iterator;<br />import java.util.List;<br />import java.util.Map;</p>
<p>import org.jdom2.Document;<br />import org.jdom2.Element;<br />import org.jdom2.input.SAXBuilder;<br />import org.xml.sax.InputSource;</p>
<p>public class ParseJdom {<br />&nbsp;/**<br />&nbsp; * 解析XMl里面的每个字段<br />&nbsp; * @param xml<br />&nbsp; * @return<br />&nbsp; */<br />&nbsp;public static Map&lt;String,String&gt; parseXml(String xml){<br />&nbsp;&nbsp;Map&lt;String,String&gt; map=Collections.synchronizedMap(new HashMap&lt;String,String&gt;());<br />&nbsp;&nbsp;StringReader reader=new StringReader(xml);<br />&nbsp;&nbsp;InputSource source=new InputSource(reader);<br />&nbsp;&nbsp;SAXBuilder sax=new SAXBuilder();<br />&nbsp;&nbsp;try {<br />&nbsp;&nbsp;&nbsp;Document doc=sax.build(source);<br />&nbsp;&nbsp;&nbsp;Element root=doc.getRootElement();<br />&nbsp;&nbsp;&nbsp;System.out.println("root,s name="+root.getName());<br />&nbsp;&nbsp;&nbsp;System.out.println("root,s value="+root.getValue());<br />&nbsp;&nbsp;&nbsp;List node=root.getChildren();<br />&nbsp;&nbsp;&nbsp;Element element=null;<br />&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;node.size();i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;element=(Element)node.get(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;map.put(element.getName(), element.getValue());<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return map;<br />&nbsp;}<br />&nbsp;<br />&nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp;String xmlHeader="&lt;"+"?"+"xml"+" version="+"\"1.0\""+" encoding="+"\"UTF-8\""+"?"+"&gt;";<br />&nbsp;&nbsp;CreateJdom jdom=new CreateJdom();<br />&nbsp;&nbsp;String result=jdom.createXml();<br />&nbsp;&nbsp;System.out.println("xmlHeader+result="+xmlHeader+result);<br />&nbsp;&nbsp;Map&lt;String,String&gt; map=new ParseJdom().parseXml(xmlHeader+result);<br />&nbsp;&nbsp;Iterator it=map.entrySet().iterator();<br />&nbsp;&nbsp;while(it.hasNext()){<br />&nbsp;&nbsp;&nbsp;Map.Entry&lt;String, String&gt; entry=(Map.Entry&lt;String, String&gt;)it.next();<br />&nbsp;&nbsp;&nbsp;System.out.println(entry.getKey()+" , "+entry.getValue());<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;}<br />}<br /></p>  <img src ="http://www.blogjava.net/stevenjohn/aggbug/383529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stevenjohn/" target="_blank">abin</a> 2012-07-19 18:13 <a href="http://www.blogjava.net/stevenjohn/archive/2012/07/19/383529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>