Skip to main content

How to process XML File in java

I had an requirement to parse an incoming SOAP Message object and do certain manipulations over it. I had to do it outside the web service route, so there was no SOAP related process methods available for me. All I had was a xml file in the Input Stream.

I searched a lots of link for xml processing, used many libraries most of which I do not even remember the  name. Then my colleague and another contributor to these blogs suggested to use the DOM Parser provided by default in java. Though it was little confusing in the beginning, with the help of couple of other blogs, we managed to complete it without any external libraries. I have attached the code and the xml file content for your reference.

XML File
Name : test.xml

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header/>
    <S:Body>
        <ns2:RegisterComplaint xmlns:ns2="http://webservice/">
            <InputElement>
<Name> Shankar </Name>
<Age> 25 </Age>
<Job> Senior Technical Consultant </Job>
   </InputElement>
            <InputElement>
<Name> Pandi </Name>
<Age> 25 </Age>
<Job> Senior Technical Consultant </Job>
   </InputElement>
            <InputElement>
<Name> Santhosh </Name>
<Age> 25 </Age>
<Job> Senior Technical Consultant </Job>
   </InputElement>
        </ns2:RegisterComplaint>
    </S:Body>
</S:Envelope>
Java Code:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
/**
 *
 * @author shaan
 */
public class Main {
    private static Document dom;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        try{
           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
           DocumentBuilder db = dbf.newDocumentBuilder();
           String file="/home/shaan/test.xml";
           dom = db.parse(file);
           Element docEle = dom.getDocumentElement();
                NodeList nl = docEle.getElementsByTagName("Name");
                int len = nl.getLength();
                String textVal = null;
if(nl != null && nl.getLength() > 0) {
                    for(int i=0;i<len;i++) {
                        Element el = (Element)nl.item(i);
textVal = el.getFirstChild().getNodeValue();
                        System.out.println("Name "+textVal);
                    }
                }                    
        }
        catch(Exception e){
            System.out.println("Exception "+e.toString());
        }
    }
}
Output:
run:
Name  Shankar
Name  Pandi
Name  
Santhosh
BUILD SUCCESSFUL (total time: 0 seconds)

You can make use of this basic model and do various kinds of processing of the xml document.  Do leave your comments if at all you face anything.

Happy Working ... <3 <3 <3




Comments

  1. Use SAX parsing which is better than DOM(http://umeshpatil.wordpress.com/2008/09/13/sax-vs-dom-parser/). SAX is like a event based programming(triggers event when it finds a node) while DOM loads the entire XML document into the memory and when the XML document is very large java will run out of its heap space.

    ReplyDelete

Post a Comment

Popular posts from this blog

My 10 years in Application Development

It's been around 10 years since I started programming. May be a bit more, if I have to include my first attempts at C programming in school. But it would be a grave insult to call remembering ten lines of code and just replicating it to put a star on the screen. I also did a course on Visual basic, but it was more gimmicks that Application development. But it was truly in the year 2007 when I started my Master in Computer Applications that I found a new flare for developing applications. 
I was very late to computers in general and even when I joined my Masters, computers were not really accessible to me. But when I joined my Masters where one is actually expected to hone the skills which they already have, but in case it was were I was learning the skills, initially it was very difficult. I was not sure what computers had for me nor I had a natural flair for programming. But the thing about computers that attracted me was the visual medium it gave. Initially it was just a door t…

Changing Timezone in Postgresql, Ubuntu

Timezone and locale are integral concepts that one should be aware of when implementing a System. For example. if you create a database in PostgreSql, it will use the default System settings for the database. Lets say you have a server in UK and your client is US. If the client tries to retrieve the current date or time, it is going to show the UK time and not the US one.
Today I encountered a different issue in our client place where the Ubuntu timezone and PostgreSql timezone were showing a incorrect values. Instead of Indian Standard Time (IST) it was showing Pacific Daylight Time(PDT). These are the steps that I followed to change the timezone to IST in PostgreSql and Ubuntu.
Changing timezone in Ubuntu:
sudo dpkg-reconfigure tzdataYou will be prompted to choose the continent and then the area. Provided screen shots where we configure the location.
Use TAB key to navigate to the OK button and then press Enter.

The changes will get reflected immediately. To check it you can open a n…

கிறுக்கனின் கிறுக்கல்கள் - அழுகையின் சிறப்பு

அழுகை என்பதை வெறுத்தவன் நான்... என்னை ஒரு நாள் பிரிந்திருக்க முடியாமல் , கைப்பேசியில் நீ சிந்திய உன் கண்ணீர் ஓசை என் காதில் கேட்கும் வரை...

பின்குறிப்பு: கிறுக்கனின் கிறுக்கல்கள் எங்கிருந்தோ தழுவப்பட்டது போல் தோன்றினால் கிறுக்கன் ( நான் உண்மையை ஏற்றுக்கொள்பவன்..:) ) பொறுப்பல்ல. கிறுக்கனின் கிறுக்கல்களில் வரும் கிறுக்கல்கள் யாவும் என் சிறய மூளையில் உதித்ததே ஆகும்.  Inspirations could have been drawn from somewhere else, but its the execution that counts....Isn't it ?