2013-08-07 1 views
0

У меня есть файл XML, размещенный на моем диске Google. У него есть некоторые данные, необходимые для запуска моего приложения для Android. Итак, я решил проверить, могу ли я получить данные из файла и сделал тест SAXParser. Тем не менее, я получаю SAXParseException: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(); 
     } 

Как решить эту проблему?

+0

http://developer.android.com/training/basics/network-ops/xml.html. используйте xmlpullparser вместо sax. quoting from docs "рекомендуют XmlPullParser, который является эффективным и поддерживаемым способом анализа XML на Android." – Raghunandan

+0

Возможно, вы получаете пустую строку в ответ из-за этого вы получаете EOF –

+0

@HarishGodara Есть ли способ решить эту проблему? –

ответ

1

Существует некоторая проблема с InputStream, пожалуйста, прочитайте это внимательно: http://www.danielschneller.com/2008/01/saxparseexception-1-1-premature-end-of.html

+0

* sigh * Это не удается только для URL-адреса Google Диска. Он отлично работает с RSS-каналами, поэтому я предполагаю, что Google не разрешает размещение XML-файлов –