Web harvest获取XML出现乱码的解决办法:
现象:
在Web harvest中使用http请求去获取某个远程的XML,此XML的特征是无文件头(即没有编码描述等关键信息),采用了多种办法去获取,出现乱码,无法解析成我们需要的数据。
办法:
(1)最原始办法:使用Java中的URLConnection,InputStream等类读取字节流,构造字符串:
Java代码
-
-
-
- URL url=new URL(link);
- URLConnection connection=url.openConnection();
- InputStream in=connection.getInputStream();
- ListbyteList=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);
- }
-
-
-
- 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 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.