Đọc tập tin XML sử dụng SAX trong Java

Chúng ta đã cùng tìm hiểu làm thế nào để đọc tập tin XML sử dụng DOM trong Java ở bài viết trước, ở bài viết này mình giới thiệu với các bạn một cách khác để đọc tập tin XML nhanh hơn và sử dụng ít bộ nhớ hơn so với DOM, đó là sử dụng SAX trong Java các bạn nhé.

Thật vậy các bạn, đó là bởi vì cách làm việc của SAX khác nhiều so với DOM, nó không tải nội dung của tập tin XML lên trên bộ nhớ hay tạo bất kỳ đối tượng nào để nắm giữ thông tin của tập tin XML. Thay vào đó, nó sử dụng các phương thức callback của đối tượng org.xml.sax.helpers.DefaultHandler để đọc tập tin XML từ trên xuống dưới.

Để các bạn hiểu rõ hơn, mình có ví dụ sau nhé:

Đọc tập tin XML sử dụng SAX trong Java

Nội dung của tập tin XML như sau:

Ở đây, mình sử dụng một đối tượng Student để lưu thông tin đã đọc được của tập tin XML, nội dung của lớp Student như sau:

Để đọc tập tin XML sử dụng SAX, đầu tiên chúng ta sẽ sử dụng các phương thức callback trong đối tượng DefaultHandler để đọc nội dung tập tin XML. Các bạn hãy tưởng tượng, chúng ta có tập tin XML và chúng ta sẽ đọc nội dung của nó từ trên xuống dưới, từ ngoài vào trong theo thứ tự phân cấp.

Đối tượng DefaultHandler có các phương thức callback sau:

  • startDocument() và endDocument(): 2 phương thức này sẽ được gọi tới khi chúng ta bắt đầu đọc và kết thúc đọc tập tin XML.
  • startElement() và endElement(): 2 phương thức này được gọi khi chúng ta bắt đầu đọc một thẻ trong tập tin XML.
  • characters(): phương thức này được gọi khi chúng ta đọc nội dung giữa hai thẻ đóng mở của tập tin XML.

Mình sẽ viết đối tượng DefaultHandler để đọc tập tin XML students.xml như sau:

Chúng ta đã có đối tượng handler rồi, bây giờ chúng ta sẽ khởi tạo đối tượng SAXParser để sử dụng đối tượng handler đọc tập tin XML.

Tiếp theo, chúng ta sẽ gọi phương thức parse() của đối tượng SAXParser để bắt đầu đọc tập tin XML.

Xem danh sách sinh viên sau khi đọc:

Kết quả:

Đọc tập tin XML sử dụng SAX trong Java

Code đầy đủ để các bạn tham khảo:

Add Comment