Esiste una libreria che può generare uno schema xsd da una classe java? Google produce molti risultati al contrario (classi java da xsd).Da generazione Pojo a Xsd
risposta
JAXB 2.0 consente di creare uno schema XML da una classe Java annotata.
Troverete alcuni esempi allo AMIS blog e allo JavaPassion site.
JiBX fa questo strumento generatore di
Lo schema prima legge uno o più JiBX definizioni vincolanti e poi utilizza la riflessione per interpretare la struttura delle classi Java riferimento nelle associazioni. Con combinando le definizioni di binding con le informazioni sulla classe effettiva il generatore di schemi è in grado di costruire uno o più schemi XML per rappresentare i documenti gestiti dai binding.
Ecco come lo farei:
public void pojoToXSD(JAXBContext context, Object pojo, OutputStream out)
throws IOException, TransformerException
{
final List<DOMResult> results = new ArrayList<DOMResult>();
context.generateSchema(new SchemaOutputResolver() {
@Override
public Result createOutput(String ns, String file)
throws IOException {
DOMResult result = new DOMResult();
result.setSystemId(file);
results.add(result);
return result;
}
});
DOMResult domResult = results.get(0);
Document doc = (Document) domResult.getNode();
// Use a Transformer for output
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(out);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
}
Dove va l'oggetto pojo? – FazoM
Grazie per dare il vostro metodo. Volevo solo aggiungere un esempio completo.
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.SchemaOutputResolver;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import test.Test;
public class Main {
public static void main(String[] args) throws JAXBException,
FileNotFoundException {
JAXBContext context = JAXBContext.newInstance("test");
try {
new Main().pojoToXSD(context, new Test(), System.out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void pojoToXSD(JAXBContext context, Object pojo, OutputStream out)
throws IOException, TransformerException
{
final List<DOMResult> results = new ArrayList<DOMResult>();
context.generateSchema(new SchemaOutputResolver() {
@Override
public Result createOutput(String ns, String file)
throws IOException {
DOMResult result = new DOMResult();
result.setSystemId(file);
results.add(result);
return result;
}
});
DOMResult domResult = results.get(0);
com.sun.org.apache.xerces.internal.dom.DocumentImpl doc = com.sun.org.apache.xerces.internal.dom.DocumentImpl) domResult.getNode();
// Use a Transformer for output
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(out);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
}
}
//---------- below will go in test package
package test;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;
@XmlRegistry
public class ObjectFactory {
private final static QName _Test_QNAME = new Name("urn:vertexinc:enterprise:calendar:1:0", "Test");
public ObjectFactory() {
}
public Test createTest() {
return new Test();
}
}
package test;
public class Test {
String name;
String cls;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCls() {
return cls;
}
public void setCls(String cls) {
this.cls = cls;
}
}
- 1. Generazione del file .proto da oggetti Java esistenti o xsd
- 2. Elaborazione da Linq a XSD
- 3. Conversione generica da POJO a Avro Record
- 4. Stored procedure arretrato a POJO da iBATIS
- 5. Crea JSONObject da POJO
- 6. Java a XSD o XSD a Java
- 7. Genera campione JSON da POJO
- 8. Mappatura da JSON a POJO senza distinzione tra maiuscole e minuscole senza cambiare il POJO
- 9. Mappatura da POJO a MultiValueMap/binding/conversion in primavera 3
- 10. Analisi da JSON a Java POJO usando GSON
- 11. Generazione classe JAXB con XSD importato e rilegatura
- 12. Generazione di array per sequenze XSD tramite JaxB JXC
- 13. Generazione Java JaxB, Come ottengo un bigDecimal dal mio xsd?
- 14. POJO a JSON in Play framework
- 15. Estrazione automatica XSD in linea da WSDL in file XSD
- 16. XSD a XForms e XForms alla conversione XSD
- 17. Get annotato nometabella hibernate da POJO
- 18. schema xsd non presentato da wsdl
- 19. Come generare xsd da wsdl
- 20. Genera struttura DDIC da XSD
- 21. Lo strumento XSD aggiunge "Specificato" a determinate proprietà/campi durante la generazione del codice C#
- 22. Mappatura POJO efficiente da/per Java Mongo DBObject utilizzando Jackson
- 23. Programma di utilità di conversione gratuito da DTD a XSD?
- 24. generazione binaria da LLVM
- 25. Generazione .afm da .ttf
- 26. Esiste un XSD per XSD, un Meta-XSD?
- 27. JAXB per creare una mappa da XSD
- 28. Quali sono i vantaggi dell'utilizzo di EJB rispetto a POJO?
- 29. Genera mappa <String, String> da POJO
- 30. È possibile utilizzare Jackson per ottenere il valore da Pojo
Io dovrei essere un esperto di JAXB e non lo sapevo. Quanto imbarazzante. +1 a voi, signore. – skaffman
C'era una certa quantità di google-fu coinvolto :) Nessun motivo per essere sorpreso lì. –
Cool grazie. Il mio google fu è debole. – Surya