Skip to content

Commit e23a4e1

Browse files
author
Pankaj Kumar
committed
SAX Parser Example
1 parent 3c14cd8 commit e23a4e1

File tree

5 files changed

+207
-0
lines changed

5 files changed

+207
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Employees>
3+
<Employee id="1">
4+
<age>29</age>
5+
<name>Pankaj</name>
6+
<gender>Male</gender>
7+
<role>Java Developer</role>
8+
</Employee>
9+
<Employee id="2">
10+
<age>35</age>
11+
<name>Lisa</name>
12+
<gender>Female</gender>
13+
<role>CEO</role>
14+
</Employee>
15+
<Employee id="3">
16+
<age>40</age>
17+
<name>Tom</name>
18+
<gender>Male</gender>
19+
<role>Manager</role>
20+
</Employee>
21+
<Employee id="4">
22+
<age>25</age>
23+
<name>Meghna</name>
24+
<gender>Female</gender>
25+
<role>Manager</role>
26+
</Employee>
27+
</Employees>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<modelVersion>4.0.0</modelVersion>
3+
<groupId>com.journaldev.xml</groupId>
4+
<artifactId>SAX-Parser-Example</artifactId>
5+
<version>0.0.1-SNAPSHOT</version>
6+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
package com.journaldev.xml;
3+
4+
public class Employee {
5+
private int id;
6+
private String name;
7+
private String gender;
8+
private int age;
9+
private String role;
10+
11+
public int getId() {
12+
return id;
13+
}
14+
15+
public void setId(int id) {
16+
this.id = id;
17+
}
18+
19+
public String getName() {
20+
return name;
21+
}
22+
23+
public void setName(String name) {
24+
this.name = name;
25+
}
26+
27+
public String getGender() {
28+
return gender;
29+
}
30+
31+
public void setGender(String gender) {
32+
this.gender = gender;
33+
}
34+
35+
public int getAge() {
36+
return age;
37+
}
38+
39+
public void setAge(int age) {
40+
this.age = age;
41+
}
42+
43+
public String getRole() {
44+
return role;
45+
}
46+
47+
public void setRole(String role) {
48+
this.role = role;
49+
}
50+
51+
@Override
52+
public String toString() {
53+
return "Employee:: ID=" + this.id + " Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender
54+
+ " Role=" + this.role;
55+
}
56+
57+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
2+
package com.journaldev.xml.sax;
3+
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
import org.xml.sax.Attributes;
8+
import org.xml.sax.SAXException;
9+
import org.xml.sax.helpers.DefaultHandler;
10+
11+
import com.journaldev.xml.Employee;
12+
13+
public class MyHandler extends DefaultHandler {
14+
15+
// List to hold Employees object
16+
private List<Employee> empList = null;
17+
private Employee emp = null;
18+
private StringBuilder data = null;
19+
20+
// getter method for employee list
21+
public List<Employee> getEmpList() {
22+
return empList;
23+
}
24+
25+
boolean bAge = false;
26+
boolean bName = false;
27+
boolean bGender = false;
28+
boolean bRole = false;
29+
30+
@Override
31+
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
32+
33+
if (qName.equalsIgnoreCase("Employee")) {
34+
// create a new Employee and put it in Map
35+
String id = attributes.getValue("id");
36+
// initialize Employee object and set id attribute
37+
emp = new Employee();
38+
emp.setId(Integer.parseInt(id));
39+
// initialize list
40+
if (empList == null)
41+
empList = new ArrayList<>();
42+
} else if (qName.equalsIgnoreCase("name")) {
43+
// set boolean values for fields, will be used in setting Employee variables
44+
bName = true;
45+
} else if (qName.equalsIgnoreCase("age")) {
46+
bAge = true;
47+
} else if (qName.equalsIgnoreCase("gender")) {
48+
bGender = true;
49+
} else if (qName.equalsIgnoreCase("role")) {
50+
bRole = true;
51+
}
52+
// create the data container
53+
data = new StringBuilder();
54+
}
55+
56+
@Override
57+
public void endElement(String uri, String localName, String qName) throws SAXException {
58+
if (bAge) {
59+
// age element, set Employee age
60+
emp.setAge(Integer.parseInt(data.toString()));
61+
bAge = false;
62+
} else if (bName) {
63+
emp.setName(data.toString());
64+
bName = false;
65+
} else if (bRole) {
66+
emp.setRole(data.toString());
67+
bRole = false;
68+
} else if (bGender) {
69+
emp.setGender(data.toString());
70+
bGender = false;
71+
}
72+
73+
if (qName.equalsIgnoreCase("Employee")) {
74+
// add Employee object to list
75+
empList.add(emp);
76+
}
77+
}
78+
79+
@Override
80+
public void characters(char ch[], int start, int length) throws SAXException {
81+
data.append(new String(ch, start, length));
82+
}
83+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
package com.journaldev.xml.sax;
3+
4+
import java.io.File;
5+
import java.io.IOException;
6+
import java.util.List;
7+
8+
import javax.xml.parsers.ParserConfigurationException;
9+
import javax.xml.parsers.SAXParser;
10+
import javax.xml.parsers.SAXParserFactory;
11+
12+
import org.xml.sax.SAXException;
13+
14+
import com.journaldev.xml.Employee;
15+
16+
public class XMLParserSAX {
17+
18+
public static void main(String[] args) {
19+
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
20+
try {
21+
SAXParser saxParser = saxParserFactory.newSAXParser();
22+
MyHandler handler = new MyHandler();
23+
saxParser.parse(new File("employees.xml"), handler);
24+
// Get Employees list
25+
List<Employee> empList = handler.getEmpList();
26+
// print employee information
27+
for (Employee emp : empList)
28+
System.out.println(emp);
29+
} catch (ParserConfigurationException | SAXException | IOException e) {
30+
e.printStackTrace();
31+
}
32+
}
33+
34+
}

0 commit comments

Comments
 (0)