VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs Java Collections

Java XML

Java XML Java DOM Parser – đọc, tạo, sửa tài liệu XML Java SAX Parser – đọc tài liệu XML Java StAX Parser – đọc tài liệu XML

Java JSON

Ví dụ JSON với Java – json.simple JSON.simple – phân tích cú pháp JSON trong Java Ví dụ JSON với Java – Jackson Jackson – phân tích cú pháp JSON trong Java
Java AWT Java Swing Java I/O Ví Dụ Java I/O Java JDBC Các Tính Năng Mới Trong Java Lập Trình Mạng Với Java Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Java SAX Parser - đọc tài liệu XML


Java DOM Parser – đọc, tạo, sửa tài liệu XML
Java StAX Parser – đọc tài liệu XML

Bài này viettuts.vn hướng dẫn bạn sử dụng trình phân tích cú pháp XML Java SAX Parser - đọc tài liệu XML.

SAX Parser có sẵn trong java core, bạn không cần phải tải thư viện nào.

SAX Parser khác với DOM Parser, trình phân tích cú pháp SAX không tải XML hoàn hoàn vào bộ nhớ, thay vào đó nó phân tích cú pháp XML bằng cách kích hoạt các sự kiện khác nhau và khi nó gặp các phần tử khác nhau như: thẻ mở, thẻ đóng, ký tự dữ liệu, comment v.v. Đây là lý do tại sao SAX Parser được gọi là trình phân tích cú pháp dựa trên sự kiện.

Để đọc tài liệu XML với SAX Parser chúng ta cần phải tạo ra một lớp kế thừa lớp DefaultHandler. Lớp DefaultHandler cung cấp các callback khác nhau như sau:

  • startElement(): kích hoạt sự kiện này khi bắt đầu thẻ.
  • endElement(): kích hoạt sự kiện này khi gặp thẻ đóng.
  • characters(): kích hoạt sự kiện này khi nó gặp một số dữ liệu văn bản.

Nội dung chính

  • Ví dụ sử dụng SAX Parser - đọc tài liệu XML

Ví dụ sử dụng SAX Parser - đọc tài liệu XML

File input.xml có nội dung như sau:

<?xml version = "1.0"?>
<class>
   <student id = "1">
      <firstname>Vinh</firstname>
      <lastname>Phan</lastname>
      <marks>85</marks>
   </student>
   
   <student id = "2">
      <firstname>Hoa</firstname>
      <lastname>Nguyen</lastname>
      <marks>95</marks>
   </student>
   
   <student id = "3">
      <firstname>Phu</firstname>
      <lastname>Tran</lastname>
      <marks>90</marks>
   </student>
</class>

Tạo lớp Student.java

package vn.viettuts.javaxml;

public class Student {
    private String id;
    private String firstName;
    private String lastName;
    private String marks;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getMarks() {
        return marks;
    }

    public void setMarks(String marks) {
        this.marks = marks;
    }

    @Override
    public String toString() {
        return "@Student, id=" + id + ", firstName=" + firstName 
                + ", lastName=" + lastName + ", marks=" + marks;
    }
}

Tạo lớp UserHandler.java kế thừa lớp DefaultHandler.java để xử lý đọc tài liệu XML:

package vn.viettuts.javaxml;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class UserHandler extends DefaultHandler {
    private String content;
    private Student student;
    private List<Student> listStudents = new ArrayList<>();;

    @Override
    public void startElement(String uri, String localName, String qName, 
            Attributes attributes) throws SAXException {
        // tạo đối tượng Student khi bắt đầu thẻ "student"
        if ("student".equalsIgnoreCase(qName)) {
            student = new Student();
            student.setId(attributes.getValue("id"));
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) 
            throws SAXException {
        switch (qName) {
        case "student":
            // add đối tượng Student vào list khi gặp thẻ đóng "student"
            listStudents.add(student);
            break;
        case "firstname":
            student.setFirstName(content);
            break;
        case "lastname":
            student.setLastName(content);
            break;
        case "marks":
            student.setMarks(content);
            break;
        }
    }

    @Override
    public void characters(char ch[], int start, int length) throws SAXException {
        // đọc nội dung của thẻ hiện tại
        content = String.copyValueOf(ch, start, length).trim();
    }

    public List<Student> getListStudents() {
        return listStudents;
    }

    public void setListStudents(List<Student> listStudents) {
        this.listStudents = listStudents;
    }
}

Tạo lớp SAXExample1.java chứa phương thức main() để thực thi đọc tài liệu XML và in kết quả ra màn hình:

package vn.viettuts.javaxml;

import java.io.File;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

public class SAXExample1 {
    public static void main(String[] args) {

        try {
            File inputFile = new File("D:\\xml\\input.xml");
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();
            UserHandler userhandler = new UserHandler();
            
            // phân tích tài liệu XML
            saxParser.parse(inputFile, userhandler);
            
            // in list đối tượng student ra màn hình
            for (Student student : userhandler.getListStudents()) {
                System.out.println(student.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Kết quả:

@Student, id=1, firstName=Vinh, lastName=Phan, marks=85
@Student, id=2, firstName=Hoa, lastName=Nguyen, marks=95
@Student, id=3, firstName=Phu, lastName=Tran, marks=90

Java DOM Parser – đọc, tạo, sửa tài liệu XML
Java StAX Parser – đọc tài liệu XML

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Processor trong XMLParser trong XMLEditor trong XMLSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml