Chủ Nhật, 11 tháng 12, 2016

So sánh SAX(Event-Based), DOM(Object-based)

I.Parsing XML

- XML Parser là chương trình giúp ta lấy, điều khiển (đọc, xóa, sửa) tài liệt xml

- Đặc điểm:

+ Độc lập ngôn ngữ

+ Độc lập mã nguồn

+ Linh hoạt Phù hợp đa công việc 

- Parser có thể chia làm 2 loại: Event-Based và Object-Based

+ Event-Based: quyết định sẽ phải làm gì với Element, Document (điển hình là SAX=Simple API for XML parsing)

+ Object-Based: convert tài liệu xml sang object (điển hình là DOM=Document Object Model)


II.Event-based(SAX)

- SAX là các API phân tách truy xuất tuần tự đến tài liệu XML. Sax cung cấp một cơ chế cho việc đọc dữ liệu từ một tài liệu XML. Nó là một thay thế tốt và hay dùng thay cho DOM. Tên của nó là viết tắt của “Simple API for XML” (tiếng Anh, tức là “API đơn giản cho XML”).

- Bộ phân tách mà hiện thực SAX (ví dụ, bộ phân tách SAX Parser) xử lí thông tin XML dưới dạng một dòng dữ liệu (single stream of data). Dòng dữ liệu này là đơn hướng, nghĩa là dữ liệu đã đọc rồi thì không thể đọc lại ngoại trừ phân tách lại từ đầu.

Hầu hết những ai sử dụng XML tin rằng kết quả của mẫu hình SAX là xử lí nhanh hơn DOM. Điều này là vì SAX stream dùng ít bộ nhớ hơn thay vì phải lưu tất cả trong bộ nhớ như với cây DOM.

- SAX có hai interface cơ bản là:

+ XMLReader: gồm thực hiện việc đọc file XML và phân tích file đó bằng cách gọi các phương thức của ContentHandler.

+ ContentHandler: gồm các phương thức xử lý việc nhận dữ liệu từ việc phân tích.

SAX được thiết kế theo Observer design pattern. XMLReader đóng vai trò là Subject và ContentHandler đóng vai trong là các Observer. Nhưng mỗi thực thể XMLReader chỉ cho phép đăng ký một listener.

III.Object based(DOM)

- DOM là chữ viết tắt từ tiếng Anh Document Object Model (“Mô hình Đối tượng Tài liệu”), là một giao diện lập trình ứng dụng (API). Thường thường DOM, có dạng một cây cấu trúc dữ liệu, được dùng để truy xuất các tài liệu dạng HTML và XML. Mô hình DOM độc lập với hệ điều hành và dựa theo kỹ thuật lập trình hướng đối tượng để mô tả tài liệu.

- Mặc dù một tài liệu hay văn bản có cấu trúc chặt chẽ (well-structured document) luôn luôn có thể được mô hình hóa bằng một cấu trúc dạng cây, DOM không có giới hạn về cấu trúc dữ liệu của một tài liệu.

- DOM API được định nghĩa bởi cả Microsoft và Sun để thao tác trực tiếp tài liệu XML trên HTML và trong ứng dụng sử dụng tài liệu XML. Ở đây, chúng tôi đề cập đến DOM API của Sun trong việc thao tác khai thác tài liệu XML trên ứng dụng

Các kiểu dữ liệu được dành cho node trong API như sau:

+ Element, Node: tương ứng Element trong tài liệu XML.

+ Attribute là dạng node không được thể hiện trong mô hình cây mà chúng là tập Node được lưu trong Map và là thuộc tính của Element Object được lưu tương ứng trên hình cây. Điều này có nghĩa, muốn truy cập Attribute thì phải truy cập đến Element.

+ Các kiểu dữ liệu thông thường như Comment, CDATA Section, Processing Instruction, DocumentType tương ứng với các thành phần trong XML như là Comment, CDATA Section, Processing Instruction và DTD.

+ Text: kiểu dành cho chữ trong tài liệu xml.

- Hầu hết các bộ phân tích XML (XML parsers) (ví dụ: Xerces) và bộ xử lí XSL (ví dụ: Xalan) đã được phát triển để sử dụng cấu trúc cây này. Những hiện thực như vậy đòi hỏi toàn bộ nội dụng của một văn bản phải được phân tích và lưu trong bộ nhớ. Vì thế, DOM được sử dụng tốt nhất trong các ứng dụng mà trong đó các thành phần của tài liệu có thể được truy xuất và thao tác một cách ngẫu nhiên. Với các ứng dụng dựa trên XML, bao gồm yêu cầu đọc/ghi có chọn lọc cho mỗi lần phân tích (one-time selective read/write per parse), DOM cho thấy được sự tối ưu về mặt bộ nhớ. Trong các trường hợp đó thì giao diện lập trình ứng dụng SAX trở nên rất tiện lợi về cả mặt tốc độ và bộ nhớ.

IV.Kết

- So sánh giữa DOM và SAX:

+SAX tốn ít tài nguyên nên phù hợp với việc quét những tài liệu lớn,DOM phù hợp với tài liệu nhỏ (do phải convert tài liệu xml sang object).

+ SAX phù hợp với việc lấy một phần nhỏ trong rất nhiều tài liệu XM, DOM phù hợp với việc điều khiển toàn bộ.

SAX nhanh hơn DOM.

- XSLT (The XML Stysheet Language for Transformations) là một ngôn ngữ để biến đổi tài liệu XML thành một dạng khác.

Không có nhận xét nào:

Đăng nhận xét