Pregunta

En versiones recientes de la fuente libre y abierto Eclipse IDE puede generar documentos XML a partir de archivos DTD y XSD. Haga clic derecho en un .dtd * o * archivo .xsd dado y seleccione "Generar -> Archivo XML ...". Puede elegir el elemento raíz para generar y si los atributos y elementos opcionales debe ser generada.

¿Puedo utilizar este sin cabeza (sin iniciar Eclipse)?

¿Fue útil?

Solución

Se puede crear un RCP aplicación sin cabeza que contiene sólo los plugins necesarios para hacer la generación real. Estos son los plugins en gran medida la DAP con un par de los complementos del núcleo necesarios para la gestión de puntos y extensión.

La aplicación RCP se puede ejecutar desde la línea de comandos, y se pasa argumentos para el esquema para generar a partir de y el nombre del archivo de salida. No se encuentra gran parte de la validación es posible que desee en una aplicación de producción, pero que muestra cómo se puede hacer. También hardcodes el juego de caracteres UTF-8, se puede ampliar el procesamiento de argumento para hacer que un parámetro opcional o algo así.

Los fragmentos siguientes se pueden incorporar en una nueva aplicación de RCP sin cabeza. Para crear la aplicación RCP, crear primero un nuevo proyecto Plugin:

  • Haga click-> Nuevo-> Otros ...-> Plug-in Desarrollo-> Plug-in de proyectos, seleccione Siguiente
  • Introduzca un nombre para el proyecto (por ejemplo, name.seller.rich.xmlgen ) y seleccione Siguiente
  • Deseleccionar Este plug-in hará contribuciones a la interfaz de usuario y seleccionar en aplicación de cliente Rich a continuación, haga clic en Finalizar
  • Para añadir las dependencias necesarias, haga doble clic en META-INF / Manifest.MF de y seleccione la opción Dependencias del editor de añadir los siguientes plugins para los Se requiere plug-ins (haga clic en agregar ... y agregue cada uno)
    • org.eclipse.core.runtime,
    • org.eclipse.core.resources; bundle-version = "3.5.0",
    • org.eclipse.wst.common.uriresolver; bundle-version = "1.1.301",
    • org.eclipse.wst.sse.core; bundle-version = "1.1.400",
    • org.eclipse.wst.xml.core; bundle-version = "1.1.400",
    • org.eclipse.wst.xml.ui; bundle-version = "1.1.0",
    • org.eclipse.xsd; bundle-version = "2.5.0",
    • com.ibm.icu; bundle-version = "4.0.1",
    • org.eclipse.wst.xsd.core; bundle-version = "1.1.401",
    • org.eclipse.wst.xsd.ui; bundle-version = "1.2.204",
    • org.eclipse.emf.ecore; bundle-version = "2.5.0"
  • En el proyecto debería ver una clase Application, copiar el contenido de Java siguiente en el método start() de la fuente Application (y las importaciones a la parte superior del archivo).

    java.io.ByteArrayOutputStream importación; java.io.File importación; java.io.FileInputStream importación; java.io.FileOutputStream importación; java.io.FileWriter importación; java.net.URI importación; importación java.net.URL;

    org.eclipse.core.internal.utils.FileUtil importación; org.eclipse.core.runtime.Platform importación; org.eclipse.emf.ecore.plugin.EcorePlugin importación; org.eclipse.equinox.app.IApplication importación; org.eclipse.equinox.app.IApplicationContext importación; org.eclipse.wst.xml.core.internal.contentmodel.CMDocument importación; importación org.eclipse.wst.xml.ui.internal.wizards.NewXMLGenerator;

    inicio public Object (contexto IApplicationContext) throws Exception {     String [] args = Platform.getCommandLineArgs ();

    String schemaFileName = args[0];// e.g. "C:\test\test.xsd"
    String xmlFileName = args[1];// e.g. "C:\test\test.xml"
    String rootName = args[2];//"myTestRoot";
    String charsetName = "UTF-8";
    
    try {
        //get the URI as a full URL path
        URI schemaUri = new File(schemaFileName).toURI();
        schemaFileName = schemaUri.toURL().toString();
    
        //TODO handle any errorInfo set into this array
        String[] errorInfo = new String[2];
        CMDocument cmDocument = NewXMLGenerator.createCMDocument(schemaFileName,
                errorInfo);
        NewXMLGenerator generator = new NewXMLGenerator(schemaFileName,
                cmDocument);
    
        generator.setRootElementName(rootName);
    
        ByteArrayOutputStream out = generator.createXMLDocument(xmlFileName,
                charsetName);
    
        //output the content to the file.
        File outFile = new File(xmlFileName);
    
        outFile.getParentFile().mkdirs();
    
        FileWriter writer = new FileWriter(outFile);
    
        writer.write(out.toString(charsetName));
    
        writer.flush();
        writer.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    return IApplication.EXIT_OK;
    

    }

Para crear una aplicación independiente, también es necesario para crear un Configuración del producto .

  • Haga click-> Nuevo-> Otros ...-> Plug-in Desarrollo-> Configuración del producto
  • Seleccione el proyecto de plugin RCP
  • Enter config en el Nombre de archivo:. Campo y haga clic en Finalizar
  • Introduzca algunos valores adecuados en los campos ID de editor de config.product, la versión y el nombre (que en realidad no importa, ya que es un producto sin cabeza).
  • En Definición del producto , seleccione Nuevo ... junto a la Producto: , los valores por defecto debería estar bien (doble comprobar el Definición de plug-in es el plug-in RCP), seleccione Aceptar
  • Guardar el producto

Ahora debe exportar la aplicación RCP.

  • Derechohaga clic en el proyecto-> Exportar ...-> Plug-in Desarrollo-> producto Eclipse
  • Introduzca un directorio de destino para la aplicación y seleccione Aceptar

Ahora debería tener una aplicación independiente que se puede invocar como lo haría con cualquier otra aplicación, el paso de parámetros de línea de comandos para generar un archivo XML de un esquema.

Los parámetros esperados son, en orden:

  • vía de acceso completa al esquema para generar a partir
  • nombre completo del archivo a crear (también se crearán los directorios padre).
  • El nombre del elemento raíz (igual que en el asistente, este es el nombre del elemento que desea generar contenido a continuación).

Nota: Este proceso sólo generará un archivo de un solo esquema, si sus referencias de esquemas otros esquemas que actualmente se producirá un error. Sería posible extender el proceso de tomar un archivo de propiedades de una lista de todas las ubicaciones de esquema de referencia, y resolver los aportes como catálogo por lo que el proceso puede resolver los esquemas. Algunas notas sobre cómo y por qué te gustaría hacer esto más adelante.
Si tengo la oportunidad Voy a mirar en la implementación de este y actualizar mi respuesta en consecuencia.


Si usted tiene, por ejemplo, un esquema de primavera es posible que desee incluir los diversos esquemas de espacio de nombres de primavera en el archivo de esquema. En Eclipse las contribuciones catálogo proporcionan un medio para mapear los identificadores de esquema a la ubicación del archivo de esquema para que pueda ser analizado. Si tiene plugins para ellos, no podían ser incluido con la aplicación y definir las contribuciones de catálogo (ver el ayuda para los punteros de contribuir).

Si usted no tiene contribuciones catálogo disponible, el proceso tendría lugar definir pares clave-valor en el archivo de propiedades para hacer referencia a las ubicaciones de esquema en la unidad.

Ejemplo contenido:

 http://www.springframework.org/schema/beans=c:\\schema\\spring-beans.xsd
 http://www.springframework.org/schema/tool=c:\\schema\\spring-tool.xsd

Otros consejos

¿Vio esta pregunta ? No se refiere específicamente a medios sin cabeza, pero es bastante similar.

Uno de los sugerencias fue la herramienta Sun XMLGenerator. Lo probé y funcionó como un encanto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top