android用SAX解析xml文件时抛出org.apache.harmony.xml.ExpatParser$ParseException异常的解决方法

来源:互联网 发布:上海网络 编辑:程序博客网 时间:2024/06/05 08:50
之前写了一个程序需要读取本地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();        }    }
现在不抛异常啦,看着就是舒服。