openplanning

Hướng dẫn sử dụng Java JDOM2 phân tích tài liệu XML

  1. Giới thiệu
  2. Thư viện
  3. Bắt đầu ví dụ
  4. So sánh một số khác biệt giữa JDOM và DOM

1. Giới thiệu

JDOM là một mô hình XML trong bộ nhớ (memory) có thể được sử dụng để đọc, viết, tạo và chỉnh sửa các tài liệu XML . JDOM cũng tương tự như DOM trong mà cả hai đều cung cấp một mô hình tài liệu XML trong bộ nhớ.
DOM được thiết kế để làm việc như nhau trong nhiều ngôn ngữ (C, C + +, ECMAScript , Java , JScript , Lingo , PHP, PLSQL , và Python) .
  • JDOM được thiết kế chỉ dành cho Java và sử dụng các tính năng Java cụ thể tự nhiên mà mô hình DOM đã tránh . Vì lý do này JDOM cố ý không thực hiện theo các tiêu chuẩn DOM w3c . JDOM không phải là một bộ phân tích cú pháp XML (XML Parser) nhưng nó có thể sử dụng SAX, Stax hoặc bộ phân tích cú pháp DOM để xây dựng (build) các tài liệu JDOM . Phiên bản JDOM từ 2.0.0 ( JDOM2 ) sử dụng tất cả các tính năng ngôn ngữ mẹ đẻ Java 6 và sau đó như Generics , Enums , var-args , kiểu trả về đồng biến (co-variant data type), v.. v..

2. Thư viện

Không giống với DOM vốn có sẵn trong JDK, Với JDOM bạn phải download thư viện này về để sử dụng:
Bạn có thể download tại trang chủ của JDOM tại:
Hoặc đơn giản là download từ Maven Repository (Kho chứa maven):

3. Bắt đầu ví dụ

Đây là hình ảnh của Project sau khi hoàn thành:
department-datas.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>
ReadXMLFile.java
package org.o7planning.tutorial.jdom2;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

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

       SAXBuilder builder = new SAXBuilder();
       File xmlFile = new File("department-datas.xml");
       
       System.out.println("Parsing FILE: "+ xmlFile.getAbsolutePath());

       try {

           Document document = (Document) builder.build(xmlFile);
           Element rootNode = document.getRootElement();
           List<Element> list = rootNode.getChildren("employee");

           for (int i = 0; i < list.size(); i++) {

               Element node = (Element) list.get(i);
               
               System.out.println(" ------ ");
               
               System.out.println("Emp No : " + node.getChildText("empNo"));
               
               System.out.println("Emp Name : " + node.getChildText("empName"));
               
               System.out.println("Hire Date : " + node.getChildText("hireDate"));
               
               System.out.println("Salary : " + node.getChildText("salary"));

           }

       } catch (IOException e) {
           System.out.println(e.getMessage());
       } catch (JDOMException e) {
           System.out.println(e.getMessage());
       }
   }
}
Kết quả sau khi chạy lớp ReadXMLFile:

4. So sánh một số khác biệt giữa JDOM và DOM

TODO