精品一区二区免费视频,四虎影院在线域名免费观看,成人精品一区二区三区四区 http://www.aygfsteel.com/windforce/category/15611.htmlzh-cnTue, 27 Feb 2007 10:26:46 GMTTue, 27 Feb 2007 10:26:46 GMT60讀取RSS歷程http://www.aygfsteel.com/windforce/archive/2006/10/20/76442.html風之力風之力Fri, 20 Oct 2006 12:09:00 GMThttp://www.aygfsteel.com/windforce/archive/2006/10/20/76442.htmlhttp://www.aygfsteel.com/windforce/comments/76442.htmlhttp://www.aygfsteel.com/windforce/archive/2006/10/20/76442.html#Feedback0http://www.aygfsteel.com/windforce/comments/commentRss/76442.htmlhttp://www.aygfsteel.com/windforce/services/trackbacks/76442.html
   無聊想寫個讀取RSS的東東,思路比較清晰:
⒈用ajax根據url抓取xml數據;
⒉解析數據,提取有用的信息;
⒊將提取出來的數據以合理的方式顯示。
本來以為比較簡單的,誰知道在第一步就卡住了。首先,ajax存在跨域問題,直接抓取沒有權限。那只好后臺用URL去取。
可是抓回來的xml文件,只要有中文就是亂碼。用new(string.getByte(),"UTF-8")解碼,會出現中文部分亂碼。抓取代碼如下:
簡單總結問題原因:讀取xml文件流的時候要使用相符合的編碼方式。一般xml都是用UTF-8編碼,而系統的默認讀取應該是GBK
(簡體中文)。上一點只是猜想:因為我用new(string.getByte(),"UTF-8"),用的是默認GBK讀取,可以解出部分中文。
所以因該在讀取xml時候指定編碼,下面代碼注釋1。
解出的代碼,如果直接傳回ajax處理,會得步到xml對象。細看下最后輸出得xml文件,發現最后多了一個"?"。這個問號因該是
用來表明xml結束的。但是dom對xml格式要求和嚴格,所以直接給回肯定是的不到responseXML.documentElement對象的。去掉后
可以正常解析。
?1public?class?GetRss?extends?HttpServlet
?2{
?3????private?static?final?Logger?logger?=?Logger.getLogger(GetRss.class);
?4???
?5????protected?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException
?6????{
?7????????String?url?=?request.getParameter("RssUrl");
?8????????logger.info(url);
?9????????try
10????????{
11????????????URL?RssUrl?=?new?URL(url);
12????????????InputStream?stream?=?RssUrl.openStream();
13????????????BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(stream),"UTF-8");//1
14????????????boolean?loop?=?true;?
15????????????StringBuffer?sb?=?new?StringBuffer();?
16
17???????????
18????????????while?(loop)?{?
19????????????if?(?in.ready()?)?{?
20????????????int?i=0;?
21????????????while?(i!=?-1)?{?
22????????????????i?=?in.read();
23????????????????sb.append((char)i);
24????????????}
?
25????????????loop?=?false;?
26????????????}
?
27????????????}

28????????????int?len?=?sb.length();
29????????????String?out?=?sb.substring(0,?len-1);//2
30????????????response.setContentType("text/xml;charset=utf-8");
31????????????response.setHeader("Cache-Control",?"no-cache");
32????????????
33????????????PrintWriter?pw=new?PrintWriter(new?OutputStreamWriter(response.getOutputStream(),"UTF-8"));
34????????????pw.write(out);
35????????????pw.close();
36????????}

37????????catch?(MalformedURLException?e)
38????????{
39????????????
40????????????logger.error("GetRss.execute?Error.?"?+?e.getMessage());
41????????}

42????????catch?(IOException?e)
43????????{
44????????????logger.error("GetRss.execute?Error.?"?+?e.getMessage());
45????????}
?????
46????}

47
48}



風之力 2006-10-20 20:09 發表評論
]]>
主站蜘蛛池模板: 香格里拉县| 常熟市| 阜南县| 莱芜市| 香格里拉县| 达尔| 南开区| 拜城县| 封开县| 昌图县| 浦北县| 沙湾县| 隆安县| 景泰县| 长葛市| 金昌市| 基隆市| 饶阳县| 黑龙江省| 永修县| 白城市| 普兰店市| 定南县| 阳信县| 新乡县| 吉林省| 康乐县| 隆林| 云浮市| 广丰县| 张家港市| 阳东县| 通河县| 中江县| 石门县| 彝良县| 大洼县| 广水市| 靖远县| 旅游| 桂林市|