XML 스키마를 나타내는 POJO 객체 트리가 있습니다. 이것은 다음 jaxb
개 스크립트로 생성되었습니다. SAXParseException : 값이 'date'의 유효한 값이 아님
나는 속성이 누락 된 스키마에 대한 루트 POJO와 자식 개체의 유효성을 검사합니다. (시도/SO How to validate against schema in JAXB 2.0 without marshalling? 질문에서 영감을 생략 catch 블록) 내 속성의
public boolean validateAgainstSchema(Pojo pojo)
{
JAXBContext jc;
jc = JAXBContext.newInstance(Pojo.class);
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new ClassPathResource("schema.xsd").getFile());
Marshaller marshaller = jc.createMarshaller();
marshaller.setSchema(schema);
marshaller.marshal(schema, new DefaultHandler());
return true;
}
하나 (pojo.childEntity.someAttribute
)하는 date
XSD
<xsd:attribute name="some_date" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:date" />
</xsd:simpleType>
</xsd:attribute>
:
내 코드는 다음과 같다
자바
@XmlAttribute(name = "someDate", required = true)
protected XMLGregorianCalendar someDate;
다른 POJO (최대 절전 모드로 매핑 됨)의 java.util.Date
개체에서 채워집니다.
private static final XMLGregorianCalendar dateToCalendar(Date date)
{
if (date == null)
return null;
try
{
GregorianCalendar c = new GregorianCalendar();
c.setTime(date);
return DatatypeFactory.newInstance()
.newXMLGregorianCalendar(c);
}
catch (DatatypeConfigurationException e)
{
e.printStackTrace();
return null;
}
}
예외는 다음과 같습니다 JAXB는 날짜를 수행해야 필드에 모두 날짜와 시간을 설정하려고하고 XMLGregorianCalendard 단순히 날짜 컨테이너처럼이 보이는
javax.xml.bind.MarshalException
- with linked exception:
[org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '2001-05-11T00:00:00.000+02:00' is not a valid value for 'date'.]
.
질문 : 오류의 원인은 무엇입니까? 어떻게 고치는 지? 날짜 인 경우
진실은 더 복잡합니다 (나는 중요하지 않다고 생각했습니다) : 날짜에서 GregCalendar를 채 웁니다. –
@djechelon - 나는 내 대답을 업데이트했습니다. 도움이되는 정보. –
좋아, 이후 xoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 여기서 모든 XGCs에 xmlSchemaType 특성을 추가하려면 XJC 알리는 방법은 있습니까? –