2013-02-25 26 views
0

Im使用SAXparse 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保持空白!

保存文件:(在启动画面线程)

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 在我想要么通过一个URLFilePathAsyncTask

回答

0

由于甚至没有人看问题的结束(请告诉我在这里处理??)我得到它工作时间后使用:

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

xr.parse(new InputSource(in)); 
... 
相关问题