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

Java 如何使SAX解析器在解析文件之前等待文件下载完成?,java,android,xml,parsing,sax,Java,Android,Xml,Parsing,Sax,我遇到了一个问题,我的XML文件加载速度慢,并且在开始解析之前没有完成下载,这会从我的解析器中抛出一个XML格式不正确的异常,显示文件下载不完整 logcat的完整错误是“error/error(323):errororg.apache.harmony.xml.ExpatParser$ParseException:第10行第46列:格式不正确(无效令牌)” 我知道xml文件是正确的,因为有时它会工作,我也可以在浏览器中打开它查看 在继续分析xml数据之前,让解析器等待InputSource的最佳

我遇到了一个问题,我的XML文件加载速度慢,并且在开始解析之前没有完成下载,这会从我的解析器中抛出一个XML格式不正确的异常,显示文件下载不完整

logcat的完整错误是“error/error(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())));
最好的方法是什么 解析器等待InputSource,然后重试 继续并解析xml 数据

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

ByteArrayOutputStream output = new ByteArrayOutputStream();
copy(ucon.getInputStream(), output);
xr.parse(new InputSource(new ByteArrayInputStream(output.toByteArray());
最好的方法是什么 解析器等待InputSource,然后重试 继续并解析xml 数据

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

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

这和我的方法有同样的问题。在解析文件之前,不会提取整个文件,这会导致解析器抛出无效令牌异常。这是怎么回事?如果在EOF之前一直从InputStream读取,那么您将拥有整个文件。不是吗?这和我的方法有同样的问题。在解析文件之前,不会提取整个文件,这会导致解析器抛出无效令牌异常。这是怎么回事?如果在EOF之前一直从InputStream读取,那么您将拥有整个文件。不是这样吗?