Проблема с 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());
        }
    }
}

Результат: Результат выполнения парсинга

В чем может быть проблема? Почему не выводятся имена?


Ответы (0 шт):