openplanning

Sử dụng Java SAX phân tích tài liệu XML

Xem thêm các chuyên mục:

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Giới thiệu

Đây là hình ảnh của Project sau khi đã hoàn thành:

2- Tạo Project

department-data.xml

<?xml version="1.0"?>
<department>

  <employee>
      <empNo>E01</empNo>
      <empName>KING</empName>
      <hireDate>17-11-1981</hireDate>
      <salary>100000</salary>
  </employee>

  <employee>
      <empNo>E02</empNo>
      <empName>JONES</empName>
      <hireDate>02-04-1981</hireDate>
      <salary>200000</salary>
  </employee>

</department>
MySaxHandler.java

package org.o7planning.tutorial.sax;

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

public class MySaxHandler extends DefaultHandler {

   boolean foundEmpNo = false;
   boolean foundEmpName = false;
   boolean foundHireDate = false;
   boolean foundSalary = false;

   @Override
   public void startElement(String uri, String localName, String qName,
           Attributes attributes) throws SAXException {
       
       System.out.println("---------------------------");
       System.out.println("Start Element :" + qName);

       if (qName.equals("empNo")) {
           foundEmpNo = true;
       }

       if (qName.equals("empName")) {
           foundEmpName = true;
       }

       if (qName.equals("hireDate")) {
           foundHireDate = true;
       }

       if (qName.equalsIgnoreCase("salary")) {
           foundSalary = true;
       }

   }

   @Override
   public void endElement(String uri, String localName, String qName)
           throws SAXException {

       System.out.println("End Element :" + qName);
   }

   @Override
   public void characters(char ch[], int start, int length)
           throws SAXException {

       System.out.println("characters :");
       
       if (foundEmpNo) {
           System.out.println("Emp No : " + new String(ch, start, length));
           foundEmpNo = false;
       }

       if (foundEmpName) {
           System.out.println("Emp Name : " + new String(ch, start, length));
           foundEmpName = false;
       }

       if (foundHireDate) {
           System.out.println("Hire Date : " + new String(ch, start, length));
           foundHireDate = false;
       }

       if (foundSalary) {
           System.out.println("Salary : " + new String(ch, start, length));
           foundSalary = false;
       }

   }

}
 
MainReadXML.java

package org.o7planning.tutorial.sax;

import java.io.File;

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

import org.xml.sax.helpers.DefaultHandler;

public class MainReadXML {

   public static void main(String[] args) {

       try {
           SAXParserFactory factory = SAXParserFactory.newInstance();
           SAXParser saxParser = factory.newSAXParser();

           DefaultHandler handler = new MySaxHandler();

           File file = new File("department-data.xml");
           saxParser.parse(file, handler);

       } catch (Exception e) {
           e.printStackTrace();
       }

   }

}
Và đây là kết quả của việc chạy lớp MainReadXML

---------------------------
Start Element :department
characters :
---------------------------
Start Element :employee
characters :
---------------------------
Start Element :empNo
characters :
Emp No : E01
End Element :empNo
characters :
---------------------------
Start Element :empName
characters :
Emp Name : KING
End Element :empName
characters :
---------------------------
Start Element :hireDate
characters :
Hire Date : 17-11-1981
End Element :hireDate
characters :
---------------------------
Start Element :salary
characters :
Salary : 100000
End Element :salary
characters :
End Element :employee
characters :
---------------------------
Start Element :employee
characters :
---------------------------
Start Element :empNo
characters :
Emp No : E02
End Element :empNo
characters :
---------------------------
Start Element :empName
characters :
Emp Name : JONES
End Element :empName
characters :
---------------------------
Start Element :hireDate
characters :
Hire Date : 02-04-1981
End Element :hireDate
characters :
---------------------------
Start Element :salary
characters :
Salary : 200000
End Element :salary
characters :
End Element :employee
characters :
End Element :department

 

3- SAX đã làm việc thế nào?

Ở đây chúng ta sẽ giải thích SAX làm việc theo ví dụ ở trên:

Xem thêm các chuyên mục:

Có thể bạn quan tâm

Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá.