Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to parse same name tag in Android XML DOM Parsing
    primarykey
    data
    text
    <p>I am not able to parse my XML here.It returns "Item" only.<br> My AndroidActivity cannot be shown as it is very big that's why i have only shown the part which is responsible for parsing.</p> <p>My XML Looks like this :</p> <pre><code>&lt;MyResource&gt; &lt;Item&gt;First&lt;/Item&gt; &lt;Item&gt;Second&lt;/Item&gt; &lt;/MyResource&gt; </code></pre> <p>My ActivityClass method:</p> <pre><code>public class ShowItems extends Activity{ ListView lv; ListAdapter adapter; static final String KEY_RESOURCE = "MyResource"; // parent node static final String KEY_ITEM = "Item"; ArrayList&lt;HashMap&lt;String, String&gt;&gt; mylist = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); String[] from={KEY_ITEM }; int[] to={R.id.mylist_item}; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.showitems); lv=(ListView) findViewById(R.id.lv_items); parseXML(); adapter = new SimpleAdapter(this, mylist,R.layout.list_item,from , to); lv.setAdapter(adapter); } private void parseXML() { // TODO Auto-generated method stub XMLParser parser = new XMLParser(); final String URL="http://10.0.2.2:8080/MySite/xml"; String xml = parser.getXmlFromUrl(URL); Document doc = parser.getDomElement(xml); NodeList nl = doc.getElementsByTagName(KEY_RESOURCE); for (int i = 0; i &lt; nl.getLength(); i++) { HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); Element e = (Element) nl.item(i); map.put(KEY_ITEM, parser.getValue(e, KEY_ITEM)); mylist.add(map); } } </code></pre> <p>My XML Parser Class:</p> <pre><code>import java.io.IOException; import java.io.StringReader; import java.io.UnsupportedEncodingException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import android.util.Log; public class XMLParser { public String getXmlFromUrl(String url) { String xml = null; try { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); 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; } 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 DOM return doc; } public String getValue(Element item, String str) { NodeList n = item.getElementsByTagName(str); return this.getElementValue(n.item(0)); } 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 ""; } } </code></pre> <p>I am not able to parse my XML here.What is the problem here ?<br> It returns "Item" only.<br> What do i need to do in my ActivityClass specially in this part of the code :</p> <pre><code>String xml = parser.getXmlFromUrl(URL); Document doc = parser.getDomElement(xml); NodeList nl = doc.getElementsByTagName(KEY_RESOURCE); for (int i = 0; i &lt; nl.getLength(); i++) { HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); Element e = (Element) nl.item(i); map.put(KEY_ITEM, parser.getValue(e, KEY_ITEM)); mylist.add(map); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload