Проблема с SAX - парсером
XML:
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student>
<firstName>Имя №1</firstName>
<lastName>Фамилия №1</lastName>
<age>20</age>
</student>
<student>
<firstName>Имя №2</firstName>
<lastName>Фамилия №2</lastName>
<age>19</age>
</student>
</students>
Класс Student
package SAXParser;
public class Student {
private String firstName;
private String lastName;
public Student(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
Класс SAX:
package SAXParser;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import java.util.ArrayList;
import java.util.List;
public class SAX extends DefaultHandler {
private String currentTag;
private String firstName;
private String lastName;
private List<Student> students = new ArrayList<>();
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) {
this.currentTag = qName;
}
@Override
public void characters(char[] ch, int start, int length) {
String information = new String(ch, start, length);
if (currentTag.equals("firstName")) {
firstName = information;
}
if (currentTag.equals("lastName")) {
lastName = information;
}
}
@Override
public void endElement(String uri, String localName, String qName) {
if ((firstName != null && !firstName.isEmpty()) && (lastName != null && !lastName.isEmpty())) {
students.add(new Student(firstName, lastName));
}
firstName = null;
lastName = null;
}
public List<Student> getStudents() {
return students;
}
}
Точка входа:
package SAXParser;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class SAXParserDemo {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
SAX handler = new SAX();
saxParser.parse(new File("E:\\Java_Projects\\Training\\src\\SAXParser\\students.xml"), handler);
List<Student> students = new ArrayList<>(handler.getStudents());
for (Student student : students) {
System.out.println("\nИмя студента: " + student.getFirstName() + "Фамилия студента: " + student.getLastName());
}
}
}
В чем может быть проблема? Почему не выводятся имена?
