2010-12-19 21 views
8

Dudo si hay algo como esto, pero pensé en preguntarlo:
¿Alguien sabe si hay una biblioteca en Java que lee un archivo xsd y "crea" los elementos definidos, p. en un formato de cadena para usar en el código?
P. ej. leer en el siguiente esquema:Análisis de Java/XSD

<?xml version="1.0" encoding="utf-8"?> 
     <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
      <xs:element name="Address"> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="Street" type="xs:string" /> 
        <xs:element name="Town" type="xs:string" /> 
        <xs:element name="Country" type="xs:string" minOccurs="0" /> 
       </xs:element> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:schema> 

Y tiene una cadena con el siguiente formato:

<Address> 
    <Street></Street> 
    <Town></Town> 
    <Country></Country> 
</Address> 

herramientas automáticas hacen algo similar, es decir, analizar un WSDL y de la sección Tipos de crear, por ejemplo, clases JAXB que pueden ser instancias de los elementos definidos en el esquema.
¿Hay alguna biblioteca para hacer esto?

ACTUALIZACIÓN:
Por ejemplo en Eclipse cuando se crea un descriptor XML para una aplicación web que presenta una mesa de árbol con todos los elementos necesarios para los usuarios rellenar de acuerdo con el esquema. ¿Cómo lo hicieron? Imagino que analizan los archivos xsds incluidos en los archivos jar
. Cualquier entrada es bienvenida.
¡Gracias!

+0

¿JAXB no hace algo como esto? ¿O estoy malentendiendo la pregunta? –

+0

@Hovercraft: No quiero crear ninguna clase. Solo quiero leer en un archivo xsd y crear una cadena de los elementos definidos. Supongo que es similar a cómo se crean las clases de jaxb. – Cratylus

+1

¿No puedo ver por qué algo así existiría? ¿Cuál es el requisito? ¿Cuántos elementos vacíos se generan para un elemento de 0 a muchos? Además, ¿Importa que la salida no capture el tipo? – Synesso

Respuesta

1

Si es un archivo WSDL con la que desea generar clases Java, a continuación, Eje WSDL2Java (basado en JAXB) se puede utilizar para obtener las clases basadas en el esquema definido en el WSDL.

JAXB también ofrece un marco vinculante que es posible que desee buscar.

http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/twbs_jaxbschema2java.html

Por encima de enlace debe ser útil.

+0

No deseo generar clases. Sí, conozco estos marcos. Solo estoy interesado en crear elementos de xsd. – Cratylus

+0

¡Oh, lo siento! Sí, mi respuesta no sirve de nada – Fazal

1

oXygen has an XML instance generator que pueden generar un conjunto de muestras de documentos XML basadas en un Esquema XML dado.

You can also invoke it from the commandline.

+0

¿Se puede usar esto en tiempo de ejecución? No estoy interesado en una herramienta que simplemente genere muestras de xsd. Estoy interesado en usarlo en tiempo de ejecución para cualquier xsd proporcionado por el usuario – Cratylus

+0

Sí, puede. Ejecutar los scripts de línea de comandos provistos o configurar las referencias adecuadas de classpath, etc. utilizando los scripts como guía (oXygen es una herramienta basada en Java). Luego, en tiempo de ejecución, dele un URI a un XSD para generar archivos. –