2011-11-05 26 views
6

Để thiết lập tên của một phần tử XML tôi sử dụng các chú thích như thế này:JAXB: Thay đổi tên của phần tử XML từ mã Java?

@XmlElement(name = "customer_id") 
public String getId(){} 

tôi phải giao tiếp với hai webservices khác nhau. Một cái hiển thị một phần tử id có tên là customer_id nhưng phần tử kia sẽ hiển thị phần tử id được đặt tên là id. Tôi giải quyết vấn đề bằng cách tạo ra một lớp học thứ hai Customer với các thuộc tính giống nhau. Chỉ khác nhau là nó sử dụng các chú thích sau

@XmlElement(name = "id") 
public String getId(){} 

và nó có một constructor sao chép mà các bản sao tất cả các thuộc tính Customer1-Customer2. Khi tôi liên lạc với dịch vụ web đầu tiên, tôi gửi đối tượng Customer1 và dịch vụ web khác nhận đối tượng Customer2.

Có khả năng nào chỉ sử dụng một đối tượng Customer, nhưng đổi tên thuộc tính id thành bất kỳ dịch vụ web nào mong đợi?

Trả lời

5

Lưu ý: Tôi là người lãnh đạo EclipseLink JAXB (MOXy) và là thành viên của nhóm chuyên gia JAXB 2 (JSR-222).

Bạn có thể sử dụng phần mở rộng tài liệu lập bản đồ bên ngoài trong MOXy JAXB để áp dụng ánh xạ thứ hai cho mô hình đối tượng của bạn. Có thể sử dụng tài liệu ánh xạ này để sửa đổi siêu dữ liệu được cung cấp qua chú thích hoặc thay thế hoàn toàn nó.

Đối với một chi tiết Ví dụ

Trong ví dụ dưới đây là một mô hình đối tượng duy nhất được ánh xạ tới các kết quả của các API thời tiết Google và Yahoo:

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