0

Google ドライブでホストされている XML ファイルがあります。Android アプリを実行するために必要なデータがいくつか含まれています。そこで、ファイルからデータを取得できるかどうかをテストすることにし、テストを行いましたSAXParser。ただし、次のようになりますSAXParseException

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
    at testing.TestSAX.processFeed(TestSAX.java:54)
    at testing.TestSAX.main(TestSAX.java:40)  

この同じコードは、たとえば RSS フィードに対しては適切に機能しますが、Google ドライブ ファイルに対してはクラッシュします。
ストリームを開く方法は次のとおりです。

try{
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();

            InputStream stream = new URL(url).openStream();
            Reader r = new InputStreamReader(stream,"UTF-8");
            InputSource source = new InputSource(stream);
            source.setEncoding("UTF-8");

            parser.parse(source, this);
        }catch(Exception e){
            errorOccured = true;
            e.printStackTrace();
        }  

これを解決するにはどうすればよいですか?

4

1 に答える 1

0

InputStream に問題があります。これを注意深く読んでください:http://www.danielschneller.com/2008/01/saxparseexception-1-1-premature-end-of.html

于 2013-08-07T08:08:58.013 に答える