partir online generar clases java xsd jaxb

online - ¿Cómo generar un archivo xsd usando código java?



xmlbeans java (4)

En lugar de crear su propio tipo simple para representar enteros comenzando con 0 , podría aprovechar el tipo xs:nonNegativeInteger existente. Lo demostraré con un ejemplo.

SpThread

Puede usar la anotación @XmlSchemaType para especificar qué tipo se debe generar en el esquema XML para un campo / propiedad.

package forum11667335; import javax.xml.bind.annotation.XmlSchemaType; public class SpThread { private int durTime; @XmlSchemaType(name="nonNegativeInteger") public int getDurTime() { return durTime; } public void setDurTime(int durTime) { this.durTime = durTime; } }

Manifestación

Puede usar el método generateSchema en JAXBContext para generar un esquema XML:

package forum11667335; import java.io.IOException; import javax.xml.bind.*; import javax.xml.transform.Result; import javax.xml.transform.stream.StreamResult; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(SpThread.class); jc.generateSchema(new SchemaOutputResolver() { @Override public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException { StreamResult result = new StreamResult(System.out); result.setSystemId(suggestedFileName); return result; } }); } }

Salida

A continuación se muestra el esquema XML que se generó.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="spThread"> <xs:sequence> <xs:element name="durTime" type="xs:nonNegativeInteger"/> </xs:sequence> </xs:complexType> </xs:schema>

<complexType name="spThread"> <sequence> <element name="SPThreadID" type="int" /> <element name="durtime" minOccurs="0" default="0"> <simpleType> <restriction base="int"> <minInclusive value="0" /> </restriction> </simpleType> </element> <element name="minexecutions" minOccurs="0" default="0"> <simpleType> <restriction base="int"> <minInclusive value="0" /> </restriction> </simpleType> </element> <element name="numThreads" type="int" /> <element name="procedures" type="spm:procedure" minOccurs="1" maxOccurs="unbounded" /> </sequence> </complexType>

Quiero generar este tipo de archivo .xsd usando código Java ...? Cómo puedo hacer eso.?

¿Especialmente cómo generar elementos de tipo Simple y ponerle restricciones?


Puede usar cualquier API de manejo XML para lograr esto. JDOM es uno de ellos. Si desea una API específica para generar esquemas XML que luego serialice en XML, es posible que desee verificar Eclipse MDT API.


Puede usar la herramienta Java2Schema para generar el esquema de las clases de Java, y también puede probar JaxB 2.0


Te recomiendo JAXB para cualquier trabajo XML que hagas. Pero normalmente los archivos XSD se generan manualmente y luego los archivos XML se generan programáticamente usando los archivos XSD. ¿Qué estás tratando de desarrollar?