SOURCE CODE:
SAXParserExample.java
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParserExample extends DefaultHandler
{
List myEmpls;
private String tempVal;
//to maintain context
private Employee tempEmp;
public SAXParserExample()
{
myEmpls = new ArrayList();
}
public void runExample()
{
parseDocument();
printData();
}
private void parseDocument()
{
//get a factory
SAXParserFactory spf = SAXParserFactory.newInstance();
try {
//get a new instance of parser
SAXParser sp = spf.newSAXParser();
//parse the file and also register this class for call backs
sp.parse("employees.xml", this);
}
catch(SAXException se) {se.printStackTrace();} catch(ParserConfigurationException pce) {pce.printStackTrace();}
catch (IOException ie) {ie.printStackTrace();}
}
/**
* Iterate through the list and print
* the contents
*/
private void printData()
{
System.out.println("No of Employees '" + myEmpls.size() + "'.");
Iterator it = myEmpls.iterator();
while(it.hasNext())
{
System.out.println(it.next().toString());
}
}
//Event Handlers
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
{
//reset
tempVal = "";
if(qName.equalsIgnoreCase("Employee"))
{
//create a new instance of employee
tempEmp = new Employee();
tempEmp.setType(attributes.getValue("type"));
}
}
public void characters(char[] ch, int start, int length) throws SAXException
{
tempVal = new String(ch,start,length);
}
public void endElement(String uri, String localName, String qName) throws SAXException
{
if(qName.equalsIgnoreCase("Employee"))
{
//add it to the list
myEmpls.add(tempEmp);
}
else if (qName.equalsIgnoreCase("Name"))
{
tempEmp.setName(tempVal);
}
else if (qName.equalsIgnoreCase("Id"))
{
tempEmp.setId(Integer.parseInt(tempVal));
}
else if (qName.equalsIgnoreCase("Age"))
{
tempEmp.setAge(Integer.parseInt(tempVal));
}
}
public static void main(String[] args)
{
SAXParserExample spe = new SAXParserExample();
spe.runExample();
}
}
Employee.java
public class Employee {
private String name;
private int age;
private int id;
private String type;
public Employee(){
}
public Employee(String name, int id, int age,String type) {
this.name = name;
this.age = age;
this.id = id;
this.type = type;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("Employee Details - ");
sb.append("Name:" + getName());
sb.append(", ");
sb.append("Type:" + getType());
sb.append(", ");
sb.append("Id:" + getId());
sb.append(", ");
sb.append("Age:" + getAge());
sb.append(".");
return sb.toString();
}
}
employees.xml
<?xml version="1.0" encoding="UTF-8"?>
<Personnel>
<Employee type="permanent">
<Name>Seagull</Name>
<Id>3674</Id>
<Age>34</Age>
</Employee>
<Employee type="contract">
<Name>Robin</Name>
<Id>3675</Id>
<Age>25</Age>
</Employee>
<Employee type="permanent">
<Name>Crow</Name>
<Id>3676</Id>
<Age>28</Age>
</Employee>
</Personnel>
No comments:
Post a Comment