2012-07-02 18 views

Trả lời

1

Đây không phải là một câu hỏi lập trình, nhưng dù sao bạn có thể bắt đầu bằng cách nhìn vào SAX parser vs XMLPull parser

tôi sẽ đề nghị làm nghiên cứu thêm trước khi đăng.

11

Sax Parser: API đơn giản của XML Parse nút tới nút, sử dụng từ trên xuống vượt qua, phân tích mà không cần lưu trữ xml, nhanh hơn so với Dom thao tác của nút như chèn hoặc xóa được cho phép. Nhu cầu SAXParserFactory

Dom Parser: Document Object Model Stores toàn bộ xml trong bộ nhớ trước khi chế biến, traverse theo hướng nào, thao tác của nút như chèn hoặc xóa không được phép. Cần DocumentBuilderFactory

Kéo trình phân tích cú pháp: Nó cung cấp nhiều điều khiển và tốc độ hơn từ hai bên trên. Cần pullParserFactory

+2

Không phải là nó trái ngược với Sax và DOM? Dom cho phép chèn và xóa trong khi Sax chỉ là một trình phân tích cú pháp? Tham khảo: http://docs.oracle.com/javase/6/docs/api/org/w3c/dom/Document.html – Benjamin

+1

Xin chào, quản trị viên, vui lòng chỉnh sửa câu trả lời (vì câu hỏi này có nhiều phiếu nhất) theo như trên chú thích: DOM ** cho phép ** các nút chèn/xóa, trong khi SAX ** không ** – radistao

+0

Làm sao Sax nhanh hơn Pull? Đối với Pull, bạn thậm chí có thể ngừng phân tích cú pháp khi đọc, vì vậy điều đó có nghĩa là bạn có thể làm ít công việc hơn nếu cần ... –

0

Theo như hiệu suất, SAX thường sẽ sử dụng ít bộ nhớ hơn nhiều. Và bạn chỉ xử lý các sự kiện bạn muốn, ví dụ: startElement(), startDocument(), endElement(), v.v., và do đó bạn sẽ chỉ lưu dữ liệu cụ thể mà bạn muốn. DOM sẽ tải toàn bộ tệp XML vào bộ nhớ.

27

Dom Parser - Nó sử dụng đối tượng dựa cách tiếp cận. nghĩa là, trước tiên nó tải toàn bộ XML trong bộ nhớ, chuyển đổi các nút XML thành các đối tượng và sau đó bắt đầu phân tích cú pháp chúng. Vì vậy, nó là khá chậm.

SAX và PULL Parser - họ sử dụng sự kiện dựa cách tiếp cận. Cả hai đều gần như giống nhau về mặt bộ nhớ và hiệu năng. Tuy nhiên, có một vài tình huống phân biệt khi sử dụng chúng như mô tả dưới đây.

Dom Parser - Sử dụng nó khi bạn cần phải Validate toàn bộ XML trước khi phân tích cú pháp. Không bao giờ sử dụng nó khi XML quá lớn và xác thực có thể bị xâm phạm. Khi bắt đầu phân tích cú pháp, nó phân tích cú pháp từ nút bắt đầu đến nút kết thúc. không có cách nào để phân tích chỉ các nút cụ thể.

SAX - Sử dụng nó khi bạn muốn phân tích cú pháp toàn bộ XML. Khi bắt đầu phân tích cú pháp, nó phân tích cú pháp từ nút bắt đầu đến nút kết thúc. không có cách nào để phân tích chỉ các nút cụ thể.

PULL - Sử dụng khi bạn không muốn phân tích cú pháp toàn bộ XML.Nó dễ thực hiện hơn SAX, bởi vì bạn không phải duy trì trạng thái của trình phân tích cú pháp của bạn. Bạn có thể kéo chỉ một nút cụ thể mà bạn quan tâm.

Đề nghị của tôi là - Cần xác nhận - Đi cho DOM, kích thước tập tin là nhỏ hoặc bạn không quan tâm đến phân tích của toàn bộ XML- Go cho KÉO, kích thước tập tin là lớn hoặc bạn cần phải phân tích cú pháp XML toàn bộ tập tin - Go cho SAX.

+0

SAX có vấn đề với thẻ tự đóng http://stackoverflow.com/questions/2707531/trouble-parsing-self- đóng-xml-thẻ-sử dụng-sax-parser – vuhung3990