Sono nuovo nell'utilizzo di JAXB e ho utilizzato XJc di JAXB 2.1.3 per generare un insieme di classi dal mio schema XML. Oltre a generare una classe per ogni elemento nel mio schema, ha creato una classe ObjectFactory.Qual è il punto delle classi ObjectFactory di JAXB 2?
Non sembra esserci nulla che mi impedisca di creare istanze di elementi direttamente, ad es.
MyElement element = new MyElement();
mentre tutorial sembrano preferire
MyElement element = new ObjectFactory().createMyElement();
Se guardo in ObjectFactory.java, vedo:
public MyElement createMyElement() {
return new MyElement();
}
quindi qual è il problema? Perché dovrei anche preoccuparmi di mantenere la classe ObjectFactory in giro? Presumo che verrà anche sovrascritto se dovessi ricompilare da uno schema alterato.
Puoi dare un esempio/riferimento di cosa (o di quanto complicato) deve essere un elemento Schema per creare *() per fare qualcosa di utile? Sto riscontrando problemi nel trovare la parte dello schema a cui fai riferimento con il tuo esempio JAXB. Se il mio schema diventa più complicato in seguito, sarebbe certamente bello creare * per gestirne una parte, ma dato che è creato * non si preoccupa nemmeno di creare elementi secondari da solo. –
Se si scarica I tarball XHTML 1.1 e XHTML Modularization 1.1, troverai le directory all'interno chiamate "SCHEMA". Metti tutti i file .xsd nelle stesse directory. Alcuni dei file .xsd importeranno anche http://www.w3.org/2001/xml.xsd; vorrete regolare le posizioni in modo appropriato se non volete che il file venga scaricato ogni volta che eseguite xjc. [cont] –
[cont] La parte specifica di .xsd che specifica il contenuto di un
è, in questo caso, in xhtml11-model-1.xsd, sotto il gruppo xhtml.head.content. –