【W(wǎng)eb Harvest】Web harvest獲取XML出現(xiàn)亂碼的解決辦法
Web harvest獲取XML出現(xiàn)亂碼的解決辦法:
現(xiàn)象:
在Web harvest中使用http請求去獲取某個遠(yuǎn)程的XML,此XML的特征是無文件頭(即沒有編碼描述等關(guān)鍵信息),采用了多種辦法去獲取,出現(xiàn)亂碼,無法解析成我們需要的數(shù)據(jù)。
辦法:
(1)最原始辦法:使用Java中的URLConnection,InputStream等類讀取字節(jié)流,構(gòu)造字符串:
Java代碼
- /**
- * 通過URL獲取XML,因為在Web harvest獲取XML時無法獲取正常編碼的XML
- */
- URL url=new URL(link);
- URLConnection connection=url.openConnection();
- InputStream in=connection.getInputStream();
- List
byteList=new ArrayList (); - byte b=-1;
- while((b=(byte)in.read())!=-1)
- {
- byteList.add(b);
- }
- byte[]bytes=new byte[byteList.size()];
- for(int i=0;i
- {
- bytes[i]=byteList.get(i);
- }
- /**
- * 輸出日志確認(rèn)其編碼
- */
- logger.debug(new String(bytes));
- logger.debug(new String(bytes,"utf-8"));
- logger.debug(new String(bytes,"gbk"));
- logger.debug(new String(bytes,"gb2312"));
(2)最好的辦法:直接使用dom4j中的SAXReader
Java代碼
- /**
- * 通過URL獲取XML,因為在Web harvest獲取XML時無法獲取正常編碼的XML
- */
- URL url=new URL(link);
- SAXReader xmlReader = new SAXReader();
- Document doc=xmlReader.read(url);
非常簡單,連編碼都不用管!
其中:link為需要獲取XML的地址
Let life be beautiful like summer flowers and death like autumn leaves.
posted on 2009-02-17 15:13 Alexwan 閱讀(2363) 評論(0) 編輯 收藏 所屬分類: J2EE 、小筆記