Web harvest获取XML出现乱码的解决办法: 现象: 在Web harvest中使用http请求去获取某个远程的XML,此XML的特征是无文件头(即没有编码描述等关键信息),采用了多种办法去获取,出现乱码,无法解析成我们需要的数据。 办法: (1)最原始办法:使用Java中的URLConnection,InputStream等类读取字节流,构造字符串: Java代码 /**
*通过URL获取XML,因为在Webharvest获取XML时无法获取正常编码的XML
*/
URLurl=newURL(link);
URLConnectionconnection=url.openConnection();
InputStreamin=connection.getInputStream();
ListbyteList=newArrayList();
byteb=-1;
while((b=(byte)in.read())!=-1)
{
byteList.add(b);
}
byte[]bytes=newbyte[byteList.size()];
for(inti=0;i
{
bytes[i]=byteList.get(i);
}
/**
*输出日志确认其编码
*/
logger.debug(newString(bytes));
logger.debug(newString(bytes,"utf-8"));
logger.debug(newString(bytes,"gbk"));
logger.debug(newString(bytes,"gb2312"));
(2)最好的办法:直接使用dom4j中的SAXReader Java代码 /**
*通过URL获取XML,因为在Webharvest获取XML时无法获取正常编码的XML
*/
URLurl=newURL(link);
SAXReaderxmlReader=newSAXReader();
Documentdoc=xmlReader.read(url);
非常简单,连编码都不用管! 其中:link为需要获取XML的地址 (责任编辑:admin) |