Khi bạn unmarshal cả XML với JAXB, bạn có thể thiết lập lược đồ XML để cho phép xác nhận trong phân tích cú pháp:JAXB Schema xác nhận khi unmarshalling không phải root yếu tố
//javax.xml.validation.Schema schema = ...
jaxbUnmarshaller = JAXBContext.newInstance(SomeRootType.class).createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);
Mặt khác, khi bạn unmarshal danh sách NestedObjest
s từ XML, từng người một (. ví dụ như giảm sử dụng bộ nhớ) phương pháp này thất bại (như Schema chỉ chấp nhận root) với một ngoại lệ:
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 22; cvc-elt.1: Cannot find the declaration of element 'NestedObject'
Nó thất bại ngay cả khi NestedObjectType
là được xác định rõ trong XSD. Có tùy chọn nào để bật xác thực đối tượng lồng nhau không? Xin lưu ý rằng việc xác định lược đồ mới là một tùy chọn khốn khổ vì XSD là bên ngoài cho ứng dụng của tôi được duy trì bởi người khác.
bạn có thể cung cấp một số đầu vào mẫu, nơi xảy ra lỗi này không? –