2008-09-15 37 views

Trả lời

8

Cách dễ nhất ở đây là để tuần tự hóa biểu đồ đối tượng. Java 1.4 đã được xây dựng để hỗ trợ tuần tự hóa dưới dạng XML.

Một giải pháp tôi đã sử dụng thành công là xStream (http://x-stream.github.io/)- đó là một thư viện nhỏ sẽ dễ dàng cho phép bạn serialize và deserialize đến và đi từ XML

Nhược điểm là bạn có thể chỉ rất giới hạn xác định XML kết quả;. Mà có thể không cần thiết trong trường hợp của bạn

+0

Ngay cả bây giờ, vào năm 2013, XStream vẫn hoạt động hoàn hảo. – Andrew

1

XStream là rất đơn giản http://x-stream.github.io/

XStream là một thư viện đơn giản để serialize đối tượng XML và ngược lại.

4

XStream bởi các folks tại Thoughtworks có một API đơn giản và thậm chí còn đề cập đến những thứ như tham chiếu trùng lặp và vòng tròn. Nó dường như được tích cực phát triển và được tài liệu hóa.

http://x-stream.github.io/

-1

Nếu bạn đang thực sự chỉ quan tâm đến serializing đối tượng của bạn vào một tập tin và sau đó deserializing chúng sau này, sau đó bạn có thể kiểm tra YAML thay vì XML. YAML dễ dàng hơn nhiều so với XML và các tệp đầu ra rất dễ đọc (có thể hoặc không thể là một yêu cầu). Hãy xem yaml.org để biết thêm thông tin. Tôi đã sử dụng JYAML thành công trên một dự án gần đây.

1

Nếu bạn cần kiểm soát cấu trúc của XML, XStream là một lựa chọn tốt. Bạn có thể sử dụng chú thích để xác định chính xác cấu trúc/ánh xạ của XML và các đối tượng của bạn.

3

Sử dụng java.beans.XMLEncoder. API của nó rất đơn giản (thực sự hơi đơn giản, nó sẽ rất hay khi nối nó với SAX ContentHandler), nhưng nó hoạt động trên nhiều đồ thị ra khỏi hộp, và thật dễ dàng để tạo ra sự kiên trì của riêng bạn cho bất kỳ các lớp học bóng bạn có thể gặp phải.

  • Cú pháp được sử dụng bởi XMLDecoder phép bạn để gọi bất kỳ phương pháp, ví dụ hoặc tĩnh, bao gồm cả nhà thầu, vì vậy nó cực kỳ linh hoạt.
  • Các bộ mã hóa khác có tên các phần tử và thuộc tính sau lớp và tên trường, do đó không có lược đồ cố định cho kết quả. XMLEncoder của XML tuân theo một DTD đơn giản và có thể dễ dàng được xác nhận hoặc chuyển đổi, ngay cả khi bạn chưa bao giờ thấy các loại mà nó sử dụng.
  • Bạn có thể chỉ định đối tượng một số nhận dạng và tham chiếu chúng trong toàn bộ biểu đồ.
  • Bạn có thể tham chiếu đến các hằng số được xác định trong các lớp hoặc giao diện.

Và nó được tích hợp vào Java SE, vì vậy bạn không cần gửi thêm thư viện.

1

JAX-B là một phần của API chuẩn và thực sự dễ sử dụng.

1

Tôi muốn thứ hai (hoặc thứ ba) XStream. Nó đọc và viết XML mà không cần bất kỳ cấu hình ràng buộc đặc biệt nào hoặc đặt nhiều cú pháp không liên quan trong XML.

2

Nếu bạn cần kiểm soát XML được tạo, tôi khuyên bạn nên xem xét Betwixt (http://commons.apache.org/betwixt/) - nó bổ sung thêm nhiều chức năng vào máy phân tích của Apache (Digester là tốt để xây dựng đồ thị đối tượng từ XML, nhưng không phải như vậy tốt cho việc tạo ra chúng).

Nếu bạn thực sự không quan tâm đến XML được tạo ra (chỉ có thể được deserialized trong tương lai), sau đó các lớp XMLEncoder/Decoder được xây dựng vào Java hoặc tốt - miễn là các đối tượng bạn đang serializing làm theo đặc tả JavaBean. Vùng lớn nhất mà tôi gặp phải với các giải pháp XMLEncoder/Decoder là nếu bạn có một bean trả về một danh sách bất biến cho một trong các thuộc tính của nó - bộ mã hóa không xử lý tình huống đó rất tốt.

2

Mặc dù XStream và JAXB có thể tuần tự hóa một số đồ thị đối tượng thành công nhưng chúng không thể xử lý các biểu đồ rất phức tạp. Giải pháp mạnh mẽ nhất cho các đồ thị phức tạp lớn là http://simple.sourceforge.net/ nó có thể xử lý bất kỳ đồ thị nào. Ngoài ra, nó nhanh chóng và đơn giản để sử dụng mà không cần bất kỳ sự phụ thuộc nào.

Các vấn đề liên quan