के लिए मान्य मान नहीं है मेरे पास POJO का ऑब्जेक्ट पेड़ है जो एक्सएमएल स्कीमा का प्रतिनिधित्व करता है। यह निम्नलिखित jaxb
चींटी स्क्रिप्ट के साथ बनाया गया था।SAXParseException: मान 'दिनांक'
मैं विशेषताएं गुम लिए स्कीमा के खिलाफ जड़ POJO और उसके बच्चों संस्थाओं को मान्य करना चाहते हैं। (ट्राई/कैच छोड़े गए ब्लॉक, से प्रेरित अतः How to validate against schema in JAXB 2.0 without marshalling? सवाल)
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;
}
}
अपवाद है:
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'.]
यह लग रहा है JAXB एक क्षेत्र है कि केवल तारीख करना चाहिए के लिए दोनों की तारीख और समय निर्धारित करने की कोशिश करता है, और XMLGregorianCalendard बस एक datetime कंटेनर है की तरह।
सवाल यह है कि: त्रुटि का कारण क्या है? कैसे ठीक करना है?
सत्य अधिक जटिल है (मैंने सोचा कि इससे कोई फर्क नहीं पड़ता): मैं –
@ डीजेकेलॉन से ग्रेग कैलेंडर को पॉप्युलेट करता हूं - मैंने अपना जवाब अपडेट किया है जानकारी जो मदद करनी चाहिए। –
ठीक है, क्योंकि मेरे पास XmlGregorianCalendars के loooooooooooooooooooooooooooooooooots है, XJC को सभी XGCs में xmlSchemaType विशेषता जोड़ने के लिए कहने का कोई तरीका है? –