Sử dụng Java SAX phân tích tài liệu XML
Xem thêm các chuyên mục:

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.


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

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
Ở đây chúng ta sẽ giải thích SAX làm việc theo ví dụ ở trên:

