如何使SAX Parser在解析之前等待文件完成下载?

时间:2010-09-20 18:44:58

标签: java android xml parsing sax

我遇到一个问题,我的XML文件加载速度很慢,并且在开始解析之前没有完成下载,这会从我的解析器中抛出一个xml格式不正确的异常,表明该文件未完全下载。

来自logcat的完整错误是“错误/错误(323):errororg.apache.harmony.xml.ExpatParser $ ParseException:在第10行,第46列:格式不正确(无效令牌)”

我知道xml文件是正确的,因为有时它会起作用,我也可以在我的浏览器中将其拉出来并查看它。

在继续解析xml数据之前,让解析器等待InputSource的最佳方法是什么?

下面的代码是我用来获取文件并解析它的代码。

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
GradeHandler gradeHandler = new GradeHandler();
xr.setContentHandler(gradeHandler);
URL url = new URL("https://url/to/xml/file");
HttpsURLConnection ucon = (HttpsURLConnection)url.openConnection();
ucon.setHostnameVerifier(new AllowAllHostnameVerifier());
xr.parse(new InputSource(new BufferedInputStream(ucon.getInputStream())));

1 个答案:

答案 0 :(得分:3)

  

最好的方法是什么?   解析器之前等待InputSource   继续并解析xml   数据?

也许在使用之前首先下载响应?

ByteArrayOutputStream output = new ByteArrayOutputStream();
copy(ucon.getInputStream(), output);
xr.parse(new InputSource(new ByteArrayInputStream(output.toByteArray());