最近两天看mars老师的mp3播放器,一步一步跟着老师敲的代码,结果运行起来,解析xml时总是报错,表面上看程序执行到某一行不在执行:如下:
System.out.println("----------------------------------2222--");
XMLReader xmlReader=saxParserFactory.newSAXParser().getXMLReader();
System.out.println("----------------------------55555--------");
List<Mp3Info> infos=new ArrayList<Mp3Info>();
System.out.println("----------------------------6666--------");
Mp3ListContentHandler mp3ListContentHandler=new Mp3ListContentHandler(infos);
System.out.println("-----------------------------8888-------");
xmlReader.setContentHandler(mp3ListContentHandler);
System.out.println("-------------------------------9999-----");
StringReader sr=new StringReader(xmlStr);
System.out.println("-------------------------------997777-----");
InputSource inputSource=new InputSource(sr);
System.out.println("-------------------------------95666999-----");
xmlReader.parse(inputSource);
System.out.println("------------------------------------111");
程序执行到红色标注部分暂停,程序无法执行,并且总是报一个让人十分郁闷的提示:
org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 4:not well-formed(invaild toke)
最后经过近4个小时在网上,还有自己程序的调试中的艰苦摸索中,发现在HttpDownloader这个类总的一段代码有点问题(标红代码):
public String download(String urlStr){
StringBuffer sb=new StringBuffer();
String line=null;
BufferedReader buffer=null;
try{
System.out.println("xml==sssss===>+");
//创建一个URL对象
URL url=new URL(urlStr);
//创建一个http连接
HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
//使用IO流读取数据
buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
while((line=buffer.readLine())!=null){
System.out.println(line);
sb.append("line="+line); //这里每次读取的xml信息都给它加上了line字符串,最终使我们的xml文件格式不正确。
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
buffer.close();
}catch(Exception e){
e.printStackTrace();
}
}
return sb.toString();
}
把上面的一段代码:sb.append("line="+line); 改成sb.append(line); 程序okey! 希望碰到此类问题的朋友能早点解决。