2

I have a xml file in remote place.I want to use that xml file in my android project.can anyone give me a example code for this.I am using android 2.2.

P.S : I can access the local xml file which is in /res folder. I don't know anything about xPath.

BenMorel
  • 34,448
  • 50
  • 182
  • 322
advishnuprasad
  • 341
  • 1
  • 6
  • 18

3 Answers3

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

Try this code for downloading your xml file and check this tutorial for reading xml http://www.java-samples.com/showtutorial.php?tutorialid=152

Achal Dave
  • 4,079
  • 3
  • 26
  • 32
Code_Life
  • 5,742
  • 4
  • 29
  • 49
0

Better way to read it in String and do whatever you want to do with it.

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;

}

Zar E Ahmer
  • 33,936
  • 20
  • 234
  • 300
0

if you are trying to set layout or drawable or style by remote xml , you can't.

jeet
  • 29,001
  • 6
  • 52
  • 53
  • No.i just want to use the xml data for some other purpose.not to set layout – advishnuprasad Jan 13 '12 at 05:44
  • Ok, then use http connection to get that xml in response, and parse it. – jeet Jan 13 '12 at 06:04
  • 1
    exactly...there only i have a problem. URL url = new URL("http://www.something.com/vishnu.xml"); urlConnection = (HttpsURLConnection) url.openConnection(); InputStream in = new BufferedInputStream(urlConnection.getInputStream()); – advishnuprasad Jan 13 '12 at 06:06
  • If you are developing on Android 2.2 or later, you can take advantage of the javax.xml.xpath's functionality (introduced in API level 8). – jeet Jan 13 '12 at 06:15
  • ty...got the answer...Used SAXParser – advishnuprasad Jan 13 '12 at 10:11