Monday, June 27, 2011

Android XML Parsing Tutorial – Using DOMParser

Moving ahead from Android XML Parsing using SAXParser, here we are going to see about how to parse a XML using DOM Parser.
we are going to parse XML from net ( by passing URL ) not from local file or string.
The output looks similar to
[sourcecode language="xml"]
<website category="android"></website>
<website category="iPhone"></website>
This is main activity class. when App. starts this file will be called first.
This file contains how to use DOM Parser to handle XML tags.
[sourcecode language="java"]
package com.androidpeople.xml.parsing;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
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 android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class XMLParsingDOMExample extends Activity {
public void onCreate(Bundle savedInstanceState) {
/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
/** Create a new textview array to display the results */
TextView name[];
TextView website[];
TextView category[];
try {
URL url = new URL(
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
NodeList nodeList = doc.getElementsByTagName("item");
/** Assign textview array lenght by arraylist size */
name = new TextView[nodeList.getLength()];
website = new TextView[nodeList.getLength()];
category = new TextView[nodeList.getLength()];
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
name[i] = new TextView(this);
website[i] = new TextView(this);
category[i] = new TextView(this);
Element fstElmnt = (Element) node;
NodeList nameList = fstElmnt.getElementsByTagName("name");
Element nameElement = (Element) nameList.item(0);
nameList = nameElement.getChildNodes();
name[i].setText("Name = "
+ ((Node) nameList.item(0)).getNodeValue());
NodeList websiteList = fstElmnt.getElementsByTagName("website");
Element websiteElement = (Element) websiteList.item(0);
websiteList = websiteElement.getChildNodes();
website[i].setText("Website = "
+ ((Node) websiteList.item(0)).getNodeValue());
category[i].setText("Website Category = "
+ websiteElement.getAttribute("category"));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
/** Set the layout view to display */


  1. The content of your blog is exactly what I needed, I like your blog, I sincerely hope that your blog good and very useful for us.

    Ecommerce developer

  2. nice blog and can u put zip file for this.....

  3. nice blog..i also love take a step to help other

    1. i m not able to get output for the above code.. got some exception in android.os.NetworkOnMainThreadException and gralloc_goldfish error (i.e) Emulator without GPU emulation detected .... help me for this problem. i gng this program for 2 days

    2. to avoid this exception by using strictMode.setThreadPolicy(policy);

  4. thnq........................

  5. can u tell how the same result can be displayed in listview?

  6. vry nice blog....

  7. WTF..! This the same tutorial as in Android People, this is a great example for Spamming & Copyright infringement

  8. i m not able to get output for the above code.. got some exception in android.os.NetworkOnMainThreadException and gralloc_goldfish error (i.e) Emulator without GPU emulation detected .... help me for this problem. i gng this program for 2 days

  9. You made some decent points there. I looked on the internet for the issue and found most individuals will go along with with your website.

  10. Nice post.Give it up. Thanks for share this article. For more visit:Web App Development

  11. Hello I took this code but at start that doesn't occur. There is an empty appendix. Please answer in what there can be a problem.

  12. I m getting the same problem

  13. Solved the problem... ADD USES permission INTERNET to ur application......... JIBOOMBA u ll c d output..

  14. Very interesting post….really informative…..of all the blogs I have read on the same topic, this one is actually enlightening….I was longing to read such kind of informative write-ups from a very long time…good to know that such kind of posts regarding.
    eCommerce Development Services Company in Bangalore | Magento developers in Bangalore