2012-12-22 3 views
1

helo, je veux lire les valeurs de ce fichier: http://www.nbp.pl/kursy/xml/lastC.xml et remplir la grille avec eux. Mon application télécharge ce fichier et l'enregistre sur SDCard earch time. Mon problème est que mon code lit des valeurs vides. voici:Android, lecture des valeurs à partir du fichier xml de la carte SD

@Override 
protected void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    grid= (GridView)findViewById(R.id.grid); 

    try{  
      url = new URL("http://www.nbp.pl/kursy/xml/LastC.xml"); 

      HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 

      connection.setRequestMethod("GET"); 


      connection.setDoOutput(true); 
      connection.connect(); 



      File dir = new File (android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/Kursy Walut"); 
       if(dir.exists()==false) 
        dir.mkdirs(); 

      File file = new File(dir, "kursywalut.xml"); 

     FileOutputStream fileoutput = new FileOutputStream(file); 

     InputStream inputstream = connection.getInputStream(); 

      int tempSize=0; 


      byte[] buffer = new byte[1024]; 

      while((tempSize = inputstream.read(buffer))>0) 
      { 

       fileoutput.write(buffer, 0, tempSize); 

      } 

fileoutput.close(); 
fichier enregistré

sur mon SDCard et un toast avec des informations

Toast.makeText(MainActivity.this, "pobrano do Kursy Walut/kursywalut.xml!!", Toast.LENGTH_SHORT).show(); 

    //here i have a array of string witch i will parse into my grid 

    String[] items=new String[13]; 

    InputStream in = new FileInputStream(file.getPath()); 

    DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 

    Document doc = builder.parse(in); 
    NodeList words = doc.getElementsByTagName("pozycja"); 

    for(int i=0; i<words.getLength(); i++) 
    { 
     items[i]= ((Element)words.item(i)).getAttribute("kod_waluty"); 

    } 

    //i setText on some textView to check that i read xmlfile correctly. 

    text.setText("value: "+items[5]); 
     in.close(); 



     grid.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, items)); 
} 
catch(Throwable t){Toast.makeText(this, t.toString(), Toast.LENGTH_LONG).show();} 


} 

après ce code mon texte TextView est seulement « valeur: » sans valeur de xml et ma grille est vide. Je suppose que je fais une erreur en lisant le fichier xml. Si quelqu'un pouvait regarder cela et m'aider à le résoudre, je serai très heureux.

+0

Mettez à jour votre question avec le code mis à jour. –

Répondre

2

Veuillez utiliser le code ci-dessous pour analyser le fichier XML à partir de SDCard en utilisant Dom Parser, cela résoudra votre problème.

MainActivity.java:-

public class MainActivity extends Activity { 

    ArrayList<String> mImageLink; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     try { 
      mImageLink = new ArrayList<String>(); 

      File file = new File("mnt/sdcard/kursywalut.xml"); 
      InputStream is = new FileInputStream(file.getPath()); 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(is)); 
      doc.getDocumentElement().normalize(); 

      NodeList nodeList = doc.getElementsByTagName("image"); 

      for (int i = 0; i < nodeList.getLength(); i++) { 

       Node node = nodeList.item(i); 

       Element fstElmnt = (Element) node; 

       mImageLink.add(fstElmnt.getAttribute("link")); 

      } 
     } catch (Exception e) { 
      System.out.println("XML Pasing Excpetion = " + e); 
     } 
    } 
} 
+0

cela n'a pas aidé;/j'ai toujours des valeurs vides dans mon attribut "kod_waluty". J'ai posté un lien vers mon fichier xml. http://www.nbp.pl/kursy/xml/lastC.xml –

Questions connexes