最近两天看mars老师的mp3播放器,一步一步跟着老师敲的代码,结果运行起来,解析xml时总是报错,表面上看程序执行到某一行不在执行:如下:
private List<Mp3Info> parse(String xmlStr){
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
List<Mp3Info> infos = new ArrayList<Mp3Info>();
try{
XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
System.out.println("--------------2");
Mp3ListContentHandler mp3ListContentHandler = new Mp3ListContentHandler(infos);
System.out.println("--------------3");
xmlReader.setContentHandler(mp3ListContentHandler);
System.out.println("--------------4");
xmlReader.parse(new InputSource(new StringReader(xmlStr)));//这部开始错
System.out.println("--------------5");
for (Iterator<Mp3Info> iterator = infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
System.out.println("--------------6");
System.out.println(mp3Info);
}
}
catch(Exception e){
e.printStackTrace();
}
return infos;
}
看日志便是标题所示的错误:
org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 449: not well-formed
在网上查的时候发现了另外一个网友的一篇文章,遭遇我和类似,这是链接
http://blog.csdn.net/tts_kevin/article/details/6274110
在日志上有这样一处:
09-12 08:37:36.176: INFO/System.out(455): --------------2
09-12 08:37:36.176: INFO/System.out(455): --------------3
09-12 08:37:36.215: INFO/System.out(455): --------------4
09-12 08:37:36.215: INFO/System.out(455): ---startElement and tagName is resources
09-12 08:37:36.215: INFO/System.out(455): ---startElement and tagName is resource
09-12 08:37:36.215: INFO/System.out(455): ---startElement and tagName is id
09-12 08:37:36.215: INFO/System.out(455): tagName is not resource
09-12 08:37:36.246: INFO/System.out(455): ---startElement and tagName is mp3.name
09-12 08:37:36.246: INFO/System.out(455): tagName is not resource
09-12 08:37:36.256: INFO/System.out(455): ---startElement and tagName is mp3.size
09-12 08:37:36.266: INFO/System.out(455): tagName is not resource
09-12 08:37:36.266: INFO/System.out(455): ---startElement and tagName is lrc.name
09-12 08:37:36.266: INFO/System.out(455): tagName is not resource
09-12 08:37:36.266: INFO/System.out(455): ---startElement and tagName is lrc.size
09-12 08:37:36.266: INFO/System.out(455): tagName is not resource
09-12 08:37:36.266: INFO/System.out(455): tagName is not resource
09-12 08:37:36.266: INFO/System.out(455): tagName is resource
09-12 08:37:36.295: INFO/System.out(455): ---startElement and tagName is resource
09-12 08:37:36.295: INFO/System.out(455): ---startElement and tagName is id
09-12 08:37:36.295: INFO/System.out(455): tagName is not resource
09-12 08:37:36.295: INFO/System.out(455): ---startElement and tagName is mp3.name
09-12 08:37:36.295: INFO/System.out(455): tagName is not resource
09-12 08:37:36.295: INFO/System.out(455): ---startElement and tagName is mp3.size
09-12 08:37:36.295: INFO/System.out(455): tagName is not resource
09-12 08:37:36.315: INFO/System.out(455): ---startElement and tagName is lrc.name
09-12 08:37:36.327: INFO/System.out(455): tagName is not resource
09-12 08:37:36.327: INFO/System.out(455): ---startElement and tagName is lrc.size
09-12 08:37:36.327: INFO/System.out(455): tagName is not resource
09-12 08:37:36.327: INFO/System.out(455): tagName is not resource
09-12 08:37:36.327: INFO/System.out(455): tagName is resource
09-12 08:37:36.327: INFO/System.out(455): ---startElement and tagName is resource
09-12 08:37:36.327: INFO/System.out(455): ---startElement and tagName is id
09-12 08:37:36.356: INFO/System.out(455): tagName is not resource
09-12 08:37:36.385: INFO/System.out(455): ---startElement and tagName is mp3.name
在这里,第三段的只开始到了“---startElement and tagName is mp3.name”这里,因此感觉是XML文件出错了,而受上面一篇文章的提示,就应该是XML的问题,上面一篇文章也是说sb的问题,也就是XML的流中出现的问题。基本上这两个问题是一个类型的。后来发现XML文件出错,把<mp3.name>Jay Sean-Maybe.mp3</mp3.name>写成了<mp3.name>Jay Sean-Maybe.mp3</name>
菜鸟一个,大家勿笑