title: How to get an image from xml data by parsing
body: <p>I have an xml structure like this</p>
  
  <pre><code> &lt;element&gt;
     &lt;foodjoint_name&gt;DineOut&lt;/foodjoint_name&gt;
     &lt;logo&gt;http://192.168.1.112/dineout/images/dominos.jpg&lt;/logo&gt;
   &lt;/element&gt;
  </code></pre>
  
  <p>I am parsing the data : <code>&lt;foodjoint_name&gt;</code> will be a string name of some thing 
  <code>&lt;logo &gt;</code> will be an image url . I have a xmlParser where i am parsing the data </p>
  
  <p>In my main class, I am showing in a <code>listView</code> the parsed data. My problem is that, I am not getting the logo. </p>
  
  <p>How to get that ?  Please tell me, if i have to change in code.</p>
  
  <p>This is my main class</p>
  
  <pre><code>// All static variables
  
      static final String URL = "http://192.168.1.112/dineout/index.php/dineout/view";
  
      // XML node keys
      static final String KEY_ITEM = "element"; // parent node
      //static final String KEY_ID = "foodjoint_id";
      static final String KEY_NAME = "foodjoint_name";
      static final String KEY_LOGO = "logo";
      //static final String KEY_DESC = "foodjoint_description";
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
  
          ArrayList&lt;HashMap&lt;String, String&gt;&gt; menuItems = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
          XMLParser parser = new XMLParser();
          String xml = parser.getXmlFromUrl(URL); // getting XML
          Document doc = parser.getDomElement(xml); // getting DOM element
  
          NodeList nl = doc.getElementsByTagName(KEY_ITEM);
          // looping through all item nodes &lt;item&gt;
          for (int i = 0; i &lt; nl.getLength(); i++) {
              // creating new HashMap
              HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
              Element e = (Element) nl.item(i);
              // adding each child node to HashMap key =&gt; value
              //map.put(KEY_ID, parser.getValue(e, KEY_ID));
              map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
              map.put(KEY_LOGO,  parser.getValue(e, KEY_LOGO));
  
              //map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
  
              // adding HashList to ArrayList
              menuItems.add(map);
          }
  
          // Adding menuItems to ListView
          ListAdapter adapter = new SimpleAdapter(this, menuItems,
                  R.layout.list_item,
                  new String[] { KEY_NAME, KEY_LOGO }, new int[] {
                          R.id.name,R.id.imageView1 });
  
          setListAdapter(adapter);
  
          // selecting single ListView item
          ListView lv = getListView();
  
          lv.setOnItemClickListener(new OnItemClickListener() {
  
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                      int position, long id) {
                  // getting values from selected ListItem
                  String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
                  String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
                  String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString();
  
                  // Starting new intent
                  Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
                  in.putExtra(KEY_NAME, name);
                  in.putExtra(KEY_LOGO, cost);
                  //in.putExtra(KEY_DESC, description);
                  startActivity(in);
  
              }
          });
      }
  }
  </code></pre>
  
  <p>This is my parser class</p>
  
  <pre><code>public class XMLParser {
  
  
  
      // constructor
      public XMLParser() {
  
      }
  
      /**
       * Getting XML from URL making HTTP request
       * @param url string
       * */
      public String getXmlFromUrl(String url) {
          String xml = null;
  
          try {
              // defaultHttpClient
              DefaultHttpClient httpClient = new DefaultHttpClient();
              HttpPost httpPost = new HttpPost(url);
  
              HttpResponse httpResponse = httpClient.execute(httpPost);
              HttpEntity httpEntity = httpResponse.getEntity();
              xml = EntityUtils.toString(httpEntity);
  
          } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
          } catch (ClientProtocolException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
          // return XML
          return xml;
      }
  
      /**
       * Getting XML DOM element
       * @param XML string
       * */
      public Document getDomElement(String xml){
          Document doc = null;
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          try {
  
              DocumentBuilder db = dbf.newDocumentBuilder();
  
              InputSource is = new InputSource();
                  is.setCharacterStream(new StringReader(xml));
                  doc = db.parse(is); 
  
              } catch (ParserConfigurationException e) {
                  Log.e("Error: ", e.getMessage());
                  return null;
              } catch (SAXException e) {
                  Log.e("Error: ", e.getMessage());
                  return null;
              } catch (IOException e) {
                  Log.e("Error: ", e.getMessage());
                  return null;
              }
  
              return doc;
      }
  
      /** Getting node value
        * @param elem element
        */
       public final String getElementValue( Node elem ) {
           Node child;
           if( elem != null){
               if (elem.hasChildNodes()){
                   for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                       if( child.getNodeType() == Node.TEXT_NODE  ){
                           return child.getNodeValue();
                       }
                   }
               }
           }
           return "";
       }
  
       /**
        * Getting node value
        * @param Element node
        * @param key string
        * */
       public String getValue(Element item, String str) {     
              NodeList n = item.getElementsByTagName(str);        
              return this.getElementValue(n.item(0));
          }
  </code></pre>