在android中读取远程xml文件

时间:2012-01-13 05:20:45

标签: android xml

我在远程位置有一个xml文件。我想在我的android项目中使用那个xml文件。任何人都给我一个示例代码。我正在使用android 2.2。

P.S:我可以访问/ res文件夹中的本地xml文件。 我对xPath一无所知。

3 个答案:

答案 0 :(得分:2)

try {
            //set the download URL, a url that points to a file on the internet
            //this is the file to be downloaded
            URL url = new URL("http://IP/Downloads/data.xml");

            //create the new connection
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();



            //and connect!
            urlConnection.connect();

            //set the path where we want to save the file
            //in this case, going to save it on the root directory of the
            //sd card.
            File SDCardRoot = Environment.getExternalStorageDirectory();
            //create a new file, specifying the path, and the filename
            //which we want to save the file as.
            File file = new File(SDCardRoot,"data.xml");

            //this will be used to write the downloaded data into the file we created
            FileOutputStream fileOutput = new FileOutputStream(file);

            //this will be used in reading the data from the internet
            InputStream inputStream = urlConnection.getInputStream();

            //this is the total size of the file
            int totalSize = urlConnection.getContentLength();
            progressDialog.setMax(totalSize);

            //variable to store total downloaded bytes
            int downloadedSize = 0;

            //create a buffer...
            byte[] buffer = new byte[1024];
            int bufferLength = 0; //used to store a temporary size of the buffer

            //now, read through the input buffer and write the contents to the file
            while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                    //add the data in the buffer to the file in the file output stream (the file on the sd card
                    fileOutput.write(buffer, 0, bufferLength);
                    //add up the size so we know how much is downloaded
                    downloadedSize += bufferLength;

            }
            //close the output stream when done
            fileOutput.close();
            //catch some possible errors...
    } catch (MalformedURLException e) {
            e.printStackTrace();
    } catch (IOException e) {
            e.printStackTrace();
    }

尝试使用此代码下载xml文件,并查看本教程以阅读xml http://www.java-samples.com/showtutorial.php?tutorialid=152

答案 1 :(得分:0)

如果您尝试通过远程xml设置布局或可绘制或样式,则不能。

答案 2 :(得分:0)

更好的方法是在String中读取它并做任何你想做的事情。

public String getXmlFromUrl(String url) {
    String xml = null;

try 
{
    //default http client
    HttpClient httpClient = new DefaultHttpClient();

    HttpPost httpPost = new HttpPost(url);

    System.out.println("URL IN PARSER:==="+url+"====");

    HttpResponse httpResponse = httpClient.execute(httpPost);

    HttpEntity httpentity = httpResponse.getEntity();

    xml = EntityUtils.toString(httpentity);   // I have changed it... because  occur while downloading..

    Log.d("response", xml);
} 
catch(UnsupportedEncodingException e)
{
    e.printStackTrace();
} 
catch (ClientProtocolException e) 
{
    e.printStackTrace();
} 
catch (IOException e) 
{
    e.printStackTrace();
}


return xml;

}