Tôi có một số lớp học với chú thích JAXB, tôi đã tạo một số trường hợp và tôi cần phải xác thực chúng đối với các tệp XSD của tôi. Tôi sẽ có thể nhận được các chi tiết của những gì là sai khi các đối tượng không hợp lệ.Cách nhận chi tiết lỗi từ Trình xác thực JAXB?
Cho đến nay tôi chưa có may mắn, tôi biết về lớp ValidationEventHandler nhưng tôi có thể sử dụng nó một cách hiệu quả với lớp Unmarshaller, vấn đề là tôi phải xác thực các đối tượng không phải là XML thô.
tôi có mã này:
MyClass myObject = new MyClass();
JAXBContext jaxbContext = JAXBContext.newInstance("x.y.z");
JAXBSource jaxbSource = new JAXBSource(jaxbContext, myObject);
SchemaFactory factory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaFile = new StreamSource(getClass().getClassLoader()
.getResourceAsStream("mySchema.xsd"));
Schema schema = factory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(jaxbSource);
Mã này sẽ làm việc, nó sẽ xác nhận đối tượng và ném một ngoại lệ với thông điệp, một cái gì đó như thế này:
cvc-mẫu-hợp lệ: Giá trị '12345678901' không có hiệu lực theo khía cạnh tôn trọng đối với mẫu '\ d {10}' đối với loại 'id'.]
Vấn đề là tôi cần cụ thể chi tiết, với một chuỗi như vậy tôi sẽ phải phân tích tất cả các tin nhắn.
Một lựa chọn có thể tồn tại ở đây: http://stackoverflow.com/questions/11921190/how-to-get-the- yếu tố-of-và-invalid-xml-file-với-thất bại-xsd-xác nhận –
Tìm thấy awnser khác cho bạn thấy làm thế nào để có được phần tử DOM không hợp lệ thực tế http://stackoverflow.com/questions/8077437/how-can- i-get-more-information-on-a n-invalid-dom-element-through-the-validator # answer-8162185 –