Bước tới nội dung

JAXP

Bách khoa toàn thư mở Wikipedia

Java API for XML Processing, hay JAXP, là một trong các API cho lập trình Java XML. Nó cung cấp khả năng kiểm chứng và phân tích các tài liệu XML. Hai loại giao diện (interface) để phân tích cơ bản là:

Giao diện thứ ba, với hứa hẹn là sẽ được thêm vào trong xuất bản lớn sắp tới của Java (tên hiệu Mustang), đang được dự kiến sẽ ra vào cuối năm 2006 là:

  • StAX, API dẫn luồng cho XML (the Streaming API for XML). JSR #173.

Cùng với các giao diện phân tích, API này còn cung cấp một giao diện XSLT để cung cấp việc chuyển đổi dữ liệu và cấu trúc từ một tài liệu XML sang một dạng khác.

J2SE 1.4 JDK là phiên bản đầu tiên mà có kèm theo JAXP 1.1.

Giao diện DOM

[sửa | sửa mã nguồn]

Giao diện DOM có lẽ là một giao diện dễ hiểu nhất. Nó phân tích toàn bộ tài liệu XML và kiến thiết một cấu trúc hoàn chỉnh đại diện cho bản tài liệu, trong bộ nhớ, bằng cách dùng các lớp để mô hình hóa các khái niệm đã ghi trong Tài liệu chi tiết đặc tả kĩ thuật của Document Object Model(DOM) Cấp độ 2.

Bộ phân tích DOM được gọi là DocumentBuilder, vì nó tạo nên một hình thức đại diện cho Document trong bộ nhớ. javax.xml.parsers.DocumentBuilder được tạo nên bởi javax.xml.parsers.DocumentBuilderFactory. DocumentBuilder tạo ra một trường hợp của org.w3c.dom.Document, tức một cấu trúc cây chứa các nốt trong Tài liệu XML. Mỗi nốt cây trong cấu trúc thực hiện một giao diện org.w3c.dom.Node. Có nhiều loại nốt cây đại diện cho loại dữ liệu tìm thấy trong bản tài liệu XML. Loại nốt quan trọng nhất là:

  • Nốt phần tử. Loại này có thể có các thuộc tính nằm ở bên trong.
  • Nốt văn bản. Loại này đại diện cho phần văn bản nằm giữa thẻ mởthẻ đóng của một phần tử tài liệu.

Xem tài liệu javadoc của gói org.w3c.dom để có danh sách đầy đủ mọi loại nốt.

 java.io.File file = new java.io.File("c:/news.xml");
 javax.xml.parsers.DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
 org.w3c.dom.Document doc=null;
 if (file.exists()){
 doc = db.parse(file);
 }
 if (doc != null) {
 /* xử lý */
 NodeList nodes = doc.getElementsByTagName("content");
 for (int i = 0; i < nodes.getLength(); i++) {
 Element e = (Element) nodes.item(i);
 /* xử lý */
 }
 }

Giao diện SAX

[sửa | sửa mã nguồn]

Bộ phân tích SAX được gọi là SAXParser và được tạo bằng javax.xml.parsers.SAXParserFactory. Khác với bộ phân tích DOM, bộ SAXParser không tạo ra một hình thức đại diện của tài liệu XML trong bộ nhớ và vì thế nó hoạt động nhanh hơn, ít tốn bộ nhớ hơn. Thay vào đó, bộ phân tích SAXParser thông báo cho các trình khách cấu trúc của tài liệu XML bằng cách gọi các hàm callbacks, nghĩa là, bằng cách gọi các phương pháp của trường hợp org.xml.sax.helpers.DefaultHandler đã được cung cấp cho bộ phân tích.

Lớp DefaultHandler nằm trong gói org.xml.sax.helpers. Lớp này thực hiện các giao diện ContentHandler, ErrorHandler, DTDHandler, và EntityResolver. Đại bộ phận các trình khách chỉ quan tâm đến những phương pháp được định nghĩa trong giao diện ContentHandler mà thôi.

Các phương pháp của giao diện ContentHandler, được DefaultHandler thực hiện, được gọi đến khi bộ phân tích SAX bắt gặp những phần tử tương ứng trong bản tài liệu XML. Những phương pháp chủ yếu trong giao diện này bao gồm:

  • phương pháp startDocument()endDocument(). Những phương pháp này được gọi lúc mở đầu và khi kết thúc một bản tài liệu XML.
  • phương pháp characters(). Phương pháp này được gọi với nội dung văn bản giữa các thẻ mởthẻ đóng của một phần tử trong bản tài liệu XML.

Các trình khách cung cấp một phân lớp của DefaultHandler. Phân lớp này được sử dụng để lấn quyền những phương pháp trên và xử lý dữ liệu. Quá trình này có thể bao gồm việc lưu trữ dữ liệu vào trong cơ sở dữ liệu, hoặc viết chúng ra một luồng (dữ liệu).

Giao diện XSLT

[sửa | sửa mã nguồn]

Ngôn ngữ tập tin định dạng XML dành cho việc chuyển đổi - (The XML Stylesheet Language for Transformations, hay XSLT) cho phép biến đổi một bản tài liệu XML sang các dạng thức dữ liệu khác.

Tài nguyên bổ trợ

[sửa | sửa mã nguồn]

Tham khảo

[sửa | sửa mã nguồn]