Cómo analizar la etiqueta del mismo nombre en Android XML DOM Parsing

No puedo analizar mi XML aquí. Solo devuelve “Artículo”.
Mi Android Activity no se puede mostrar ya que es muy grande por eso solo he mostrado la parte que es responsable de analizar.

Mi XML se parece a esto:

 First Second  

Mi método ActivityClass:

 public class ShowItems extends Activity{ ListView lv; ListAdapter adapter; static final String KEY_RESOURCE = "MyResource"; // parent node static final String KEY_ITEM = "Item"; ArrayList<HashMap> mylist = new ArrayList<HashMap>(); 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 < nl.getLength(); i++) { HashMap map = new HashMap(); Element e = (Element) nl.item(i); map.put(KEY_ITEM, parser.getValue(e, KEY_ITEM)); mylist.add(map); } } 

Mi clase de analizador XML:

 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 ""; } } 

No puedo analizar mi XML aquí. ¿Cuál es el problema aquí?
Devuelve “Artículo” solamente.
¿Qué debo hacer en mi ActivityClass especialmente en esta parte del código?

 String xml = parser.getXmlFromUrl(URL); Document doc = parser.getDomElement(xml); NodeList nl = doc.getElementsByTagName(KEY_RESOURCE); for (int i = 0; i < nl.getLength(); i++) { HashMap map = new HashMap(); Element e = (Element) nl.item(i); map.put(KEY_ITEM, parser.getValue(e, KEY_ITEM)); mylist.add(map); } 

Su método getValue() obtiene el elemento MyResource , a partir de ahí, debe obtener todos los elementos en MyResource y getElementValue() . El código de ejemplo es:

  public Map getValue(Element item, String str) { NodeList n = item.getElementsByTagName(str); for (int i = 0; i < n.getLength(); i++) { System.out.println(getElementValue(n.item(i))); } //Here store it in list/map and return list/map instead of String return list/MapHere; }