for parse xml on android best way is to use SAXParser. i explained it bellow with demo....
first of all create your activity class like as bellw.
public class ActivityForSax extends ListActivity {
private ProgressDialog pDialog;
private ItemXMLHandler myXMLHandler;
private String rssFeed = "https://www.dropbox.com/s/t4o5wo6gdcnhgj8/imagelistview.xml?dl=1";
private TextView textview;
private ListView mListView;
private ArrayList<HashMap<String, String>> menuItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.xml_dom);
    textview = (TextView)findViewById(R.id.textView1);
    doParsing();
    mListView = getListView();
}
public void doParsing(){
    if (isNetworkAvailable()) {
        textview.setText("Loading...Please wait...");
        new AsyncData().execute(rssFeed);
    } else {
        showToast("No Network Connection!!!");
    }   
}
class AsyncData extends AsyncTask<String, Void, Void> {
    @Override
    protected void onPreExecute() {
        menuItems = new ArrayList<HashMap<String, String>>();
        pDialog = new ProgressDialog(ActivityForSax.this);
        pDialog.setTitle("Loading....");
        pDialog.setMessage("Please wait...");
        pDialog.show();
        super.onPreExecute();
    }
    @Override
    protected Void doInBackground(String... params) {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();
            myXMLHandler = new ItemXMLHandler();
            xr.setContentHandler(myXMLHandler);
            URL _url = new URL(params[0]);
            xr.parse(new InputSource(_url.openStream()));
        } catch (ParserConfigurationException pce) {
            Log.e("SAX XML", "sax parse error", pce);
        } catch (SAXException se) {
            Log.e("SAX XML", "sax error", se);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        textview.setText("Done!!!");
        if (pDialog != null && pDialog.isShowing()) {
            pDialog.dismiss();
        }
        ArrayList<Bean> itemsList = myXMLHandler.getItemsList();
        for (int i = 0; i < itemsList.size(); i++) {
            Bean objBean = itemsList.get(i);
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();
            // adding each child node to HashMap key => value
            map.put("TITLE :: ", objBean.getTitle());
            map.put("DESC :: ", objBean.getDesc());
            map.put("PUBDATE :: ", objBean.getPubDate());
            // adding HashList to ArrayList
            menuItems.add(map);
        }
        // Adding menuItems to ListView
        ListAdapter adapter = new SimpleAdapter(ActivityForSax.this, menuItems,
                R.layout.list_item,
                new String[] { "TITLE :: ", "DESC :: ", "PUBDATE :: " }, new int[] {
                R.id.name, R.id.email, R.id.mobile });
        mListView.setAdapter(adapter);
    }
}
public void showToast(String msg) {
    Toast.makeText(ActivityForSax.this, msg, Toast.LENGTH_LONG).show();
}
public boolean isNetworkAvailable() {
    ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}
}
now you need to create default handler class for parsing xml data.
public class ItemXMLHandler extends DefaultHandler {
Boolean currentElement = false;
String currentValue = "";
Bean item = null;
private ArrayList<Bean> itemsList = new ArrayList<Bean>();
public ArrayList<Bean> getItemsList() {
    return itemsList;
}
// Called when tag starts
@Override
public void startElement(String uri, String localName, String qName,
        Attributes attributes) throws SAXException {
    currentElement = true;
    currentValue = "";
    if (localName.equals("item")) {
        item = new Bean();
    }
}
// Called when tag closing
@Override
public void endElement(String uri, String localName, String qName)
        throws SAXException {
    currentElement = false;
    if (localName.equals("id")) {
        item.setId(currentValue);
    } else if (localName.equals("title")) {
        item.setTitle(currentValue);
    } else if (localName.equals("desc")) {
        item.setDesc(currentValue);
    } else if (localName.equals("pubDate")) {
        item.setPubDate(currentValue);
    } else if (localName.equals("link")) {
        item.setLink(currentValue);
    } else if (localName.equals("item")) {
        itemsList.add(item);
    }
}
// Called to get tag characters
@Override
public void characters(char[] ch, int start, int length)
        throws SAXException {
    if (currentElement) {
        currentValue = currentValue + new String(ch, start, length);
    }
}
}
and finally your Bean class like as...
public class Bean {
private String id;
private String title;
private String desc;
private String pubDate;
private String link;
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public String getDesc() {
    return desc;
}
public void setDesc(String desc) {
    this.desc = desc;
}
public String getPubDate() {
    return pubDate;
}
public void setPubDate(String pubDate) {
    this.pubDate = pubDate;
}
public String getLink() {
    return link;
}
public void setLink(String link) {
    this.link = link;
}
}