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"]
<maintag>
<item>
<name>AndroidPeople</name>
<website category="android">www.androidpeople.com</website>
</item>
<item>
<name>iPhoneAppDeveloper</name>
<website category="iPhone">www.iphone-app-developer.com</website>
</item>
</maintag>
[/sourcecode]
XMLParsingDOMExample.java
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 java.net.URL;
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.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class XMLParsingDOMExample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);
/** Create a new textview array to display the results */
TextView name[];
TextView website[];
TextView category[];
try {
URL url = new URL(
"http://www.androidpeople.com/wp-content/uploads/2010/06/example.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
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"));
layout.addView(name[i]);
layout.addView(website[i]);
layout.addView(category[i]);
}
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
/** Set the layout view to display */
setContentView(layout);
}
}
[/sourcecode]

18 comments:

  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

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

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

    http://androidtrainningcenter.blogspot.in/

    ReplyDelete
    Replies
    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

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

      Delete
  4. thnq........................

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

    ReplyDelete
  6. vry nice blog....

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

    ReplyDelete
  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

    ReplyDelete
  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.

    ReplyDelete
  10. 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.

    ReplyDelete
  11. I m getting the same problem

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

    ReplyDelete