Basit classes'un doğru şemasını (yapı ve veri türlerini doğrulamak için) belirlerken zor bir zaman geçiriyorum. Örneğin, schemagen
(JDK ile birlikte verilir) ile Employee
sınıfına cevap alabilirim, ancak yine de HumanResources
için çalışmaya başlayamadım.Marshaller setSchema için uygun XML şeması
Employee
sınıf örneklerinin toplanmasını XML'e serileştirmeye çalışıyorum. Bunun için, Employee
sınıf öğelerinin bir listesini içeren HumanResources
sınıfını oluşturdum. Örnek:
Önce javax.xml.bind.SchemaOutputResolver genişleten bir sınıf oluşturmak gerekir: Aşağıda
ArrayList<Employee> ems = getTestData();
HumanResources hm = new HumanResources(ems);
SchemaFactory sf = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
JAXBContext jaxbContext = JAXBContext.newInstance(HumanResources.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setSchema(sf.newSchema(new File("src\\server\\HumanResources.xsd")));
marshaller.marshal(new JAXBElement<HumanResources>(
new QName(null, "HumanResources"), HumanResources.class, hm), os);