Saturday, February 28, 2009

XML Parsing

There is a high rise in information exchange between application and XML has become the standard. Here is an simple basic XML parsing example which gives an basic idea of fetching information from an XML file.

The sample XML file:
<?xml version="1.0"?>
<company name="my comapany">
<employee id="1">
<name>Mike</name>
</employee>
<employee id="2">
<name>Mark</name>
</employee> </company>
Java code to read the XML file:

package pkg;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;import org.w3c.dom.Element;
import org.w3c.dom.NodeList;import org.xml.sax.SAXException;

public class XMLReader {
public void readXML(String fileName) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
Document document = documentBuilder.parse(new File(fileName));
//GET THE ROOT ELEMENT
Element root = document.getDocumentElement();
System.out.println("Root: " + root.getNodeName());
System.out.println("Company Name: " + root.getAttribute("name"));
//GET THE LIST OF CHILD ELEMENTS UNDER ROOT
NodeList employeeList = root.getElementsByTagName("employee");
System.out.println("Total employees: " + employeeList.getLength());
Element employee;
String name = null, id = null;
for(int i=0;i<employeeList.getLength();i++) {
employee = (Element)employeeList.item(i);
//FETCH ID OF EMPLOYEE
if(employee.hasAttributes()) {
id = employee.getAttributes().getNamedItem("id").getNodeValue();
}
//GET NAME OF THE EMPLOYEE name = employee.getElementsByTagName("name").item(0).getTextContent();
System.out.println("Id: " + id + "\tName: " + name);
}
}
}
Happy parsing !!! :)