Hai loại giao diện interface để phân tích cơ bản là: • Giao diện phân tích dạng Mô hình đối tượng tài liệu Document Object Model - viết tắt là DOM • Giao diện phân tích API đơn giản dành
Trang 1JAXP(Java API for XML
Processing)
Bởi:
Wiki Pedia
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 phân tích dạng Mô hình đối tượng tài liệu (Document Object Model)
- viết tắt là DOM
• Giao diện phân tích API đơn giản dành cho XML (Simple API for XML) - viết tắt là SAX
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
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
Trang 2nố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ở và 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
Ví dụ
java.io.File file = new java.io.File("c:/news.xml");
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í */
Trang 3Giao diện SAX
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 Bản mẫu:Javadoc:SE đã đượ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() và 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ở và 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
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