I have the correct output coming out of my parser for the xml file, but am not able to add the object correctly to my array. I put a demo on runnable...
<?xml version="1.0"?>
<company>
<staff>
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
<staff>
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
Following this simple SAX tutorial I have parsed the employee xml and successfully added it to a list, however, when I create my Employee.class and try and set the First,Last,Nick and Salary to the emp object:
emp.setFirstName(fname);
I am unable to get the correct results in my object array:
Employee emp = new Employee();
ArrayList<Employee> empList = new ArrayList<Employee>(); //ERROR returns 21 items
ArrayList<String> testList = new ArrayList<String>(); //CORRECT returns 8 items
public void characters(char ch[], int start, int length) throws SAXException {
if (bfname) {
fname = new String(ch, start, length);
System.out.println("First Name : " + fname);
emp.setFirstName(fname);
testList.add(fname);
bfname = false;
}
if (blname) {
lname = new String(ch, start, length);
System.out.println("Last Name : " + lname);
emp.setLastName(lname);
testList.add(lname);
blname = false;
}
if (bnname) {
nname = new String(ch, start, length);
System.out.println("Nick Name : "+ nname);
emp.setNickName(nname);
testList.add(nname);
bnname = false;
}
if (bsalary) {
salary = new String(ch, start, length);
System.out.println("Salary : " + salary);
emp.setSalary(salary);
testList.add(salary);
bsalary = false;
}
empList.add(emp);
}
The testList will show 8 items, the empList will return 21 items which when read out to the screen is 21 lines of the last entry in the xml document.
What am I doing incorrectly here?
SOLVED::: Thanks @zakimak:
if (bfname) {
**emp = new Employee();**
fname = new String(ch, start, length);
System.out.println("First Name : " + fname);
emp.setFirstName(fname);
testList.add(fname);
bfname = false;
}
if (blname) {
lname = new String(ch, start, length);
System.out.println("Last Name : " + lname);
emp.setLastName(lname);
testList.add(lname);
blname = false;
}
if (bnname) {
nname = new String(ch, start, length);
System.out.println("Nick Name : "+ nname);
emp.setNickName(nname);
testList.add(nname);
bnname = false;
}
if (bsalary) {
salary = new String(ch, start, length);
System.out.println("Salary : " + salary);
emp.setSalary(salary);
testList.add(salary);
bsalary = false;
**empList.add(emp)**;
}