首页 > 解决方案 > Saxparser:格式不正确(无效标记)

问题描述

我复制并编辑了一些代码,然后从 Android Studio 在我的手机上运行它:

try {
         File myFile = new File(Storage.CONTENT_CACHE, "test.xml");
         if(!myFile.exists()) {
                String xml = "<?xml version='1.0' encoding='windows-1252'?><root>ä</root>";
                OutputStreamWriter wrt = new OutputStreamWriter(new FileOutputStream(myFile), "Cp1252");
                wrt.write(xml);
                wrt.close();
         }

         SAXParserFactory sf = SAXParserFactory.newInstance();
         SAXParser p = sf.newSAXParser();
         InputSource inputSource = new InputSource();
         inputSource.setByteStream(new FileInputStream(myFile));
         p.parse(inputSource, new DefaultHandler() {
                    public void characters(char[] ch, int start, int length) throws SAXException {
                        String test = String.valueOf(ch, start, length);
                        String s = "breakpt";
                    }
                });

      } catch (Exception e) {
                e.printStackTrace();
      }

有人可以解释为什么我收到消息“格式不正确(无效令牌)”的异常吗?

标签: javaandroidencodingsaxparser

解决方案


看来你需要使用inputSource.setEncoding("windows-1252"). 其他库试图检测字符集,但我找不到任何健壮的。


推荐阅读