1

こんにちは、私はこのファイルから値を読み取りたい: http://www.nbp.pl/kursy/xml/lastC.xmlおよびそれらでグリッドを埋めます。私のアプリケーションはこのファイルをダウンロードし、実行中に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();

私のsdCardにファイルを保存し、情報でトーストを作ります

    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();}


}

このコードの後、私の TextView テキストは "value:" のみで、xml からの値はなく、グリッドは空です。xmlファイルの読み取り中に間違いを犯していると思います。誰かがこれを見て、私がそれを解決するのを手伝ってくれるなら、私はとても幸せです.

4

1 に答える 1

2

DomParserを使用してSDCardからXMLファイルを解析するために以下のコードを使用してください。問題が解決します。

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);
        }
    }
}
于 2012-12-22T13:04:13.193 に答える