JAXB cho người mới bắt đầu: Hướng dẫn xử lý XML bằng Java
Để các ứng dụng giao tiếp với nhau, thường phải chuyển đổi dữ liệu thành định dạng tương thích cao. Với mục đích này, thư viện JAXB tồn tại dưới Java, xử lý các đối tượng thành các tệp XML.
Tạo tệp XML bằng JAXB - Thực tiễn tốt nhất
JAXB là viết tắt của Kiến trúc Java cho liên kết XML . Nó cho phép các đối tượng Java được chuyển đổi thành các tệp XML và ngược lại. Trước khi bạn bắt đầu, có một vài điểm cần lưu ý:
- JAXB đã là một phần không thể thiếu của bộ JRE kể từ phiên bản 1.6 . Ngoài ra, môi trường phát triển Java phải được cập nhật vì nó đã sửa các lỗi.
- Tránh các loại dữ liệu nguyên thủy như số nguyên, số thập phân hoặc số nguyên âm cũng như các loại dữ liệu ẩn danh . Không có tương đương trong JAXB cho điều này. Mặt khác, các đối tượng, kiểu dữ liệu số, danh sách và bộ có thể được chuyển đổi. JAXB cũng không thể xử lý các loại dữ liệu phức tạp như java.time.LocalDate . Điều này đòi hỏi một bộ chuyển đổi được tạo ra đặc biệt.
- Trong thuật ngữ kỹ thuật, hướng từ Java sang XML được gọi là sắp xếp theo thứ tự, trong khi unmarshẩy là viết tắt của hướng ngược lại.
chú thích XML
Video mới nhất
JAXB cho người mới bắt đầu: hướng dẫn sử dụng ví dụ về bộ sưu tập CD
AudioCD.java: Các thuộc tính của CD âm thanh được xác định tại đây
MusicDB.java: Bộ sưu tập nhạc bao gồm danh sách các đĩa CD âm thanh
Hướng dẫn của chúng tôi là về một bộ sưu tập CD được xuất ra bằng XML. Nó bao gồm một số đĩa CD âm thanh. Nghệ sĩ, năm phát hành, tên của album và các bài hát được ghi lại cho mỗi CD âm thanh.
- Đầu tiên, lớp nên được tạo, chứa dữ liệu của đĩa CD âm thanh. Điều này bao gồm các nghệ sĩ, năm phát hành, album và các bài hát trong CD.
- Để kiểm soát tốt hơn đầu ra ở định dạng XML, các chú thích XML được yêu cầu bắt đầu bằng @ dưới Java.
- Phần tử gốc trong tệp XML có thể được chỉ định bằng cách sử dụng chú thích sau: @XmlRootEuity (name = "Audiocd")
- Bạn có thể chèn một chú thích phía trên các phương thức getter hoặc setter chỉ định một tên thay thế cho một thuộc tính Java. Ví dụ: thay vì năm thuộc tính, năm xuất bản phải là đầu ra: @XmlEuity (name = "năm xuất bản")
- Thứ tự của các thuộc tính được xác định bởi chú thích @XmlType (propOrder = {"artist", "title", "year", "songlist"}) . Điều này có nghĩa là tên của nghệ sĩ xuất hiện đầu tiên trong tệp XML, tiếp theo là tên của album, năm phát hành và danh sách các bài hát. Mặt khác, thứ tự phụ thuộc vào tệp Java.
- Tiếp theo, tạo một lớp Java mới gọi là MusicDB, chứa danh sách các đĩa CD âm thanh. Tên của bộ sưu tập nhạc và vị trí của bộ sưu tập nhạc cũng được ghi lại ở đây. Về nguyên tắc, quy trình này tương tự như trong tệp Java được đề cập ở trên.
Từ các đối tượng Java đến các tệp XML
Video mới nhất
AudioCDMain.java: Một số đĩa CD âm thanh được tạo tại đây
AudioCDMain.java: Tạo bộ sưu tập nhạc
AudioCDMain.java: Chuyển đổi mã thành XML
Việc chuyển đổi tự diễn ra trong một chương trình thử nghiệm, chính xác hơn là trong phương thức chính.
- Đầu tiên, tạo nhiều phiên bản CD Âm thanh để tạo nhiều CD Âm thanh.
- Một phiên bản của bộ sưu tập nhạc loại MusicDB cũng được yêu cầu.
- Ngoài ra, JAXB cần biết lớp Java nào chứa phần tử gốc. Trong trường hợp của chúng tôi, đây là lớp MusicDB: JAXBContext bối cảnh = JAXBContext.newInstance (MusicDB. Class);
- Việc chuyển đổi diễn ra bằng cách sử dụng phiên bản Marshaller, được liên kết với phương thức JAXB được đề cập ở trên: Marshaller m = bối cảnh.createMarshaller ();
- Phương thức Marshaller cung cấp các tùy chọn khác, chẳng hạn như tài liệu XML được định dạng đầu ra: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Toàn bộ điều ngược lại
Video mới nhất
AudioCDMain.java: JAXB tạo các đối tượng Java từ tệp XML
Tệp XML đã được định dạng bởi JAXB
Về cơ bản, việc chuyển đổi theo hướng khác tiến hành theo cách tương tự:
- Đầu tiên, một thể hiện của phương thức unmarshaller được tạo ra: unmarshaller at = context.createUnmarshaller ();
- Sau đó, cá thể unmarshaler cần tên của tệp XML được tạo trước đó: MusicDB mdb2 = (MusicDB) um.unmarshal (FileReader mới (MUSICDB_XML));