Sự khác biệt giữa JAXP và JAXB là gì?


Câu trả lời:


69

JAXP (Java API cho xử lý XML) là một thuật ngữ ô tô khá lỗi thời bao gồm các API XML cấp thấp khác nhau trong JavaSE, chẳng hạn như DOM, SAX và StAX.

JAXB (Kiến trúc Java cho Liên kết XML) là một API cụ thể (nội dung bên dưới javax.xml.bind) sử dụng các chú thích để liên kết các tài liệu XML với một mô hình đối tượng java.


1
Ngoài phân tích cú pháp (DOM, SAX, v.v.), tôi tin rằng JAXP cũng bao gồm các API cho các tác vụ như đánh giá XPath, thực hiện các phép biến đổi XSLT và xác thực XML dựa trên một lược đồ. Tôi nhớ đã sử dụng javax.xml.validationcác lớp để xác thực các yêu cầu đến chống lại XSD của dịch vụ của tôi, nhằm giúp khách hàng tự khắc phục sự cố.
spaaarky21

49

JAXP là Java API dành cho Xử lý XML, cung cấp nền tảng để chúng tôi phân tích cú pháp Tệp XML bằng Bộ phân tích cú pháp DOM hoặc SAX.

Trong khi JAXB là Kiến trúc Java cho Liên kết XML, nó sẽ giúp truy cập các tài liệu XML từ các ứng dụng được viết bằng ngôn ngữ lập trình Java dễ dàng hơn.

Ví dụ: Tệp Computer.xml, nếu chúng ta muốn truy cập dữ liệu bằng JAXP, chúng ta sẽ thực hiện các bước sau

  1. Tạo Trình phân tích cú pháp SAX hoặc Trình phân tích cú pháp DOM và sau đó Phân tích dữ liệu, nếu chúng ta sử dụng DOM, nó có thể tốn bộ nhớ nếu tài liệu quá lớn. Giả sử nếu chúng ta sử dụng trình phân tích cú pháp SAX, chúng ta cần xác định phần đầu của tài liệu. Khi nó gặp điều gì đó quan trọng (theo thuật ngữ SAX, một "sự kiện") chẳng hạn như bắt đầu thẻ XML hoặc văn bản bên trong thẻ, nó sẽ cung cấp dữ liệu đó cho ứng dụng gọi.
  2. Sau đó, Tạo một trình xử lý nội dung xác định các phương thức sẽ được trình phân tích cú pháp thông báo khi nó gặp một sự kiện. Các phương thức này, được gọi là phương thức gọi lại, thực hiện hành động thích hợp trên dữ liệu mà chúng nhận được.

Các thao tác tương tự nếu được thực hiện bởi JAXB, các bước sau cần được thực hiện để truy cập Computer.xml

  1. Ràng buộc lược đồ cho tài liệu XML.
  2. Bỏ quản lý tài liệu thành các đối tượng nội dung Java. Các đối tượng nội dung Java đại diện cho nội dung và tổ chức của tài liệu XML và có sẵn trực tiếp cho chương trình của bạn. Sau khi giải phóng, chương trình của bạn có thể truy cập và hiển thị dữ liệu trong tài liệu XML chỉ bằng cách truy cập dữ liệu trong các đối tượng nội dung Java và sau đó hiển thị nó. Không cần tạo và sử dụng trình phân tích cú pháp và không cần viết trình xử lý nội dung với các phương thức gọi lại. Điều này có nghĩa là các nhà phát triển có thể truy cập và xử lý dữ liệu XML mà không cần phải biết về XML hoặc xử lý XML

DOM xử lý tệp XML dưới dạng đối tượng, trong khi SAX xử lý các mục riêng lẻ dưới dạng sự kiện, điều nào hiệu quả hơn?
Malwaregeek

5
@Malwaregeek: Tùy thuộc vào tình huống, SAX thích hợp hơn nếu bạn đang truy cập toàn bộ XML theo thứ tự tuần tự vì nó chiếm ít bộ nhớ hơn. DOM thích hợp hơn nếu bạn muốn truy cập ngẫu nhiên các phần tử ở giữa trong XML Nhưng nó cần nhiều bộ nhớ hơn. Sự cân bằng này cũng tương tự như bộ nhớ cân bằng không gian Vs Thời gian trong mỗi chương trình
Rengasami Ramanujam

1

Sự khác biệt chính là Lược đồ xml đóng vai trò nào. JAXP đã lỗi thời mà không có nhận thức về Lược đồ XML trong khi JAXB xử lý liên kết lược đồ như bước đầu tiên.


Hướng dẫn JAXP ( JSR 206 ), trong phần “Triển khai xác thực SAX” , cung cấp một phần dành riêng cho “Xác thực bằng lược đồ XML”. Đặc tả cũng đề cập đến lớp Lược đồ như một phần của API JAXP. (Nó đã bị thu hồi như một dự án độc lập sau khi được đưa vào OpenJDK 7, xem phần 11.5 trong bản PDF đặc tả của JAXP 1.6.)
Olivier Cailloux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.