2011-09-27 24 views
6

Tôi gặp sự cố khi sử dụng JAXB. Tôi đã tạo các lớp Java của tôi thông qua xjc (sử dụng một lược đồ xsd) và có một ràng buộc toàn cục cho các kiểu dữ liệu XML xs: date xs: dateTime và xs: time tới java.util.Calendar với phân tích cú pháp và phương thức in.Java: JAXB: So sánh JAXBElement <Calendar> thành xs: ngày không chính xác

Mọi thứ hoạt động tốt cho đến khi tôi đánh dấu một số trường xs: date là không thể. Xjc tạo các trình bao bọc JAXBElement cho các thuộc tính đó. Nếu các trường này không được sửa đổi ngày được in ra bao gồm thông tin thời gian dẫn đến lỗi xác thực.

Có khả năng buộc Marshaller chuyển đổi nó thành xs: date thay vì xs: dateTime không?

Tôi có thể chỉ định ràng buộc cho những trường nhận được XMLAdapater đặc biệt chuyển đổi các trường đó không?

Thuộc tính bên trong Java-Class trông như thế:

@XmlElementRef(name = "dateField", namespace = "namespace", type = JAXBElement.class) 

protected JAXBElement<Calendar> dateField; 

và XSD-ngoại hình tương ứng như

<xs:element name="dateField" minOccurs="0" nillable="true" type="xs:date" /> 

Ai đó có thể giúp tôi xin vui lòng?

Thanks and best regards,

Arne

+0

Bạn có chắc chắn muốn 'nillable =" true "' ở địa điểm đầu tiên không? Thay vào đó, bạn không thể tạo phần tử tùy chọn? Tôi chưa bao giờ thấy một nhu cầu thực sự cho nó hoặc cảm thấy rằng tôi đã bỏ lỡ nó. –

Trả lời

1

Bạn có thực sự cần để lập bản đồ Lịch bên trong một JAXBElement ?, sẽ không được chính xác để sử dụng di sản XMLGregorianCalendar thay vì (và sau đó bạn có thể chuyển nó sang một buổi hẹn hò)?