之前写了一个程序需要读取本地XML文件,测试成功就放过了,今天无意间发现了这个异常,虽然说只是Warining,不过每次看着logcat都看到一堆的信息就烦。。。
为了让自己心情好点,所以决定干掉这个异常。
org.apache.harmony.xml.ExpatParser$ParseException: At line ., column .: not well-formed (invalid token);
直接看这个异常的名字ParseException----解析异常,not well-formed----格式不好、格式不是很规范,所以可能出错的原因是:1、XML文件写的格式出问题,2、读取XML文件时出问题,3、解析的时候出问题。有点废话,不过就是这样。
一般情况下,都是第2点出问题,也就是从本地XML读取后,读取的数据出错了,我的程序就是这个问题,也是一个新手问题。
private void readconfigOn(String Path) {
File f = new File(Path);
String path = f.getAbsolutePath();
FileInputStream fileIS;
byte[] resultByte = new byte[512];
int length = 0;
try {
fileIS = new FileInputStream(path);
length = fileIS.read(resultByte);
} catch (IOException e1) {
//e1.printStackTrace();
return; // no file make it return
}
//String resultStr = new String(resultByte); 这样是错的,这样在原XML文件内容后面再加上一堆乱码
String resultStr = new String(resultByte,0,length); //根据从XML文件读取byte的个数进行截取
Log.d(TAG,resultStr); //查看下要传给解析器的数据
//我上网搜索的时候,有些人是sb.append("line="+line); 之后改sb.append(line);就好了,其实也是第2点问题
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();
reader.setContentHandler(new IPConfigHandler());
reader.parse(new InputSource(new StringReader(resultStr)));
} catch (Exception e) {
e.printStackTrace();
}
}
现在不抛异常啦,看着就是舒服。