2013-02-25 5 views
0

Im использует SAX до parse a XML File хранится в Интернете. А затем заполнить обычай GridView Это прекрасно работает. Теперь я хочу загрузить XML-файл в приложении. Начните с local storage, а затем проанализируйте его позже.Android SAXParser анализирует локальный хранимый xml-файл

Анализировать:

class loadingTask extends AsyncTask<String, Void, String> { 
     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      gridView.setAdapter(new LkwAdapter(Lkw.this,itemList)); 
      showProgress.dismiss(); 
     } 

     @Override 
     protected String doInBackground(String... strings) { 

      try{ 
       URL contURL = new URL(rUrl); 
       SAXParserFactory spf = SAXParserFactory.newInstance(); 
       SAXParser sp = spf.newSAXParser(); 
       XMLReader xr = sp.getXMLReader(); 
       LkwParseHandler handler = new LkwParseHandler(); 
       xr.setContentHandler(handler); 
       xr.parse(new InputSource(contURL.openStream()));//THIS WORKS 
       //xr.parse(new InputSource(new FileInputStream("test.xml"))); 
       //THIS IS ONE OF MY MANY TRIES, what InputSource do i use? 

       itemList = handler.getLkwItems(); 

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

Это работает для интернет-файлов !! Затем, когда я сначала сохраняю файл и пытаюсь его использовать, GridView остается пустым!

Save File: (в тему на заставке)

InputStream input = null; 
FileOutputStream output = null; 
try { 
    URL url = new URL("http://test.com/test.xml"); 
    input = url.openConnection().getInputStream(); 
    output = openFileOutput("test.xml", Context.MODE_PRIVATE); 

    int read; 
    byte[] data = new byte[1024]; 
    while ((read = input.read(data)) != -1) 
     output.write(data, 0, read); 

    output.close(); 
    input.close(); 

} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    Intent i = new Intent(SplashScreen.this, MainMenu.class); 
    } 

    startActivity(i); 
    finish(); 
} 

Может ли я правильно экономить в первую очередь? что мне не хватает?

В этом вопросе, вы можете увидеть, что я пытаюсь сделать Android Data handling and XML version control concept В конце концов, я хочу, чтобы либо передать URL или FilePath к AsyncTask

ответ

0

Поскольку никто даже не смотрел на вопрос (Будет сделка здесь?) Я получил его работу в течение нескольких часов, используя:

... 
FileInputStream fis = openFileInput("test.xml"); 
InputStreamReader in = new InputStreamReader(fis); 

xr.parse(new InputSource(in)); 
...