Pregunta

Estamos desarrollando una aplicación que implica una cantidad sustancial de transformaciones XML.No tenemos datos de prueba de entrada adecuados per se, solo archivos DTD o XSD.Nos gustaría generar nosotros mismos nuestros datos de prueba a partir de estos archivos.¿Existe una forma fácil/gratuita de hacerlo?

Editar

Aparentemente no existen herramientas gratuitas para esto y estoy de acuerdo en que OxygenXML es una de las mejores herramientas para esto.

¿Fue útil?

Solución

Creo que el oxígeno (http://www.oxygenxml.com/) también lo hace, pero ese es otro producto comercial.Aunque es bonito...Lo recomiendo encarecidamente a cualquiera que trabaje mucho con XML.También viene en un bonito complemento de Eclipse.

Creo que existe una prueba gratuita de 30 días con todas las funciones.

Otros consejos

En Visual Studio 2008 SP1 y versiones posteriores, Explorador de esquemas XML Puede crear un documento XML con algunos datos de muestra básicos:

  1. Abra su documento XSD
  2. Cambiar al Explorador de esquemas XML
  3. Haga clic derecho en el nodo raíz y seleccione "Generar Xml de muestra".

Screenshot of the XML Schema Explorer

En versiones recientes de código abierto y gratuito. Eclipse IDE puede generar documentos XML a partir de archivos DTD y XSD.Haga clic derecho en un archivo *.dtd o *.xsd determinado y seleccione "Generar -> Archivo XML...".Puede elegir qué elemento raíz generar y si se deben generar atributos y elementos opcionales.

Por supuesto, también puedes usar Eclipse para crear y editar tus archivos de esquema DTD y XSD.Y no es necesario instalar ningún complemento.Está incluido en la distribución estándar.

Para usuarios de Intellij Idea:

Eche un vistazo a Herramientas -> Acciones XML

enter image description here

Parece funcionar muy bien (hasta donde lo he probado).

Editar:

Como lo mencionó @naXa, ahora también puede hacer clic derecho en el archivo XSD y hacer clic en "Generar documento XML a partir de un esquema XSD..."

El procesador de cámara disponible en Sourceforge.net generará casos de prueba xml para cualquier XSD.Hay un tutorial disponible para mostrarle cómo generar sus propios ejemplos de prueba, incluido el uso de sugerencias de contenido para garantizar ejemplos realistas, no solo basura aleatoria.

El tutorial está disponible aquí:http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

Y puede encontrar más información sobre la herramienta, que utiliza el estándar del mecanismo de ensamblaje de contenido (CAM) de OASIS para refactorizar su XSD en una estructura más compatible con XSLT, en el sitio web de recursos: http://www.jcam.org.uk

Disfruta, DW

Puede utilizar el Generador de instancias XML que forma parte del Validador de múltiples esquemas de Sun/Oracle.

Es README.txt dice:

Sun XML Generator es una herramienta Java para generar varias instancias XML a partir de varios tipos de esquemas.Admite DTD, Relájese el espacio de nombres, Relájate Core, Trex y un subconjunto de esquema XML W3C Parte 1.[...]

Esta es una herramienta de línea de comandos que puede generar instancias válidas e inválidas a partir de esquemas.Se puede utilizar para generar casos de prueba para aplicaciones XML que necesitan ajustarse a un esquema particular.

Descargar y descomprimir xmlgen.zip desde el pagina de descarga msv y ejecute el siguiente comando para obtener instrucciones de uso detalladas:

java -jar xmlgen.jar -help

La herramienta parece lanzarse bajo una licencia BSD;el código fuente es accesible desde aquí

XMLSpy lo hace por ti, aunque no es gratis...

Creo que Estudio Xml líquido lo hace por usted y es gratis, pero personalmente no lo he usado para crear datos de prueba.

Parece que nadie ha podido responder la pregunta hasta ahora :)

Utilizo MOXy de EclipseLink para generar dinámicamente clases vinculantes y luego revisar recursivamente los tipos vinculados.Es algo pesado, pero permite la inyección de valores XPath una vez que se crea una instancia del árbol de objetos:

InputStream in = new FileInputStream(PATH_TO_XSD);
DynamicJAXBContext jaxbContext = 
            DynamicJAXBContextFactory.createContextFromXSD(in, null, Thread.currentThread().getContextClassLoader(), null);
DynamicType rootType = jaxbContext.getDynamicType(YOUR_ROOT_TYPE);
DynamicEntity root = rootType.newDynamicEntity();
traverseProps(jaxbContext, root, rootType, 0);

TraverseProps es un método recursivo bastante simple:

private void traverseProps(DynamicJAXBContext c, DynamicEntity e, DynamicType t, int level) throws DynamicException, InstantiationException, IllegalAccessException{
        if (t!=null) {
            logger.info(indent(level) + "type [" + t.getName() + "] of class [" + t.getClassName() + "] has " + t.getNumberOfProperties() + " props");
            for (String pName:t.getPropertiesNames()){
                Class<?> clazz = t.getPropertyType(pName);
                logger.info(indent(level) + "prop [" + pName + "] in type: " + clazz);
                //logger.info("prop [" + pName + "] in entity: " + e.get(pName));

                if (clazz==null){
                    // need to create an instance of object
                    String updatedClassName = pName.substring(0, 1).toUpperCase() + pName.substring(1);
                    logger.info(indent(level) + "Creating new type instance for " + pName + " using following class name: " + updatedClassName );
                    DynamicType child = c.getDynamicType("generated." + updatedClassName);
                    DynamicEntity childEntity = child.newDynamicEntity();
                    e.set(pName, childEntity);
                    traverseProps(c, childEntity, child, level+1);
                } else {
                    // just set empty value
                    e.set(pName, clazz.newInstance());
                }
            }
        } else {
            logger.warn("type is null");
        }
    }

Convertir todo a XML es bastante fácil:

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);

También puede utilizar XMLPad (de uso gratuito) que se encuentra aquí http://www.wmhelp.com para generar sus muestras xml.Desde el menú:XSD -> generar un archivo XML de muestra.

Microsoft ha publicado una herramienta de "generación de documentos" como muestra. Este es un artículo que describe la arquitectura y el funcionamiento de la aplicación de muestra con cierto detalle.

Si solo desea ejecutar la herramienta de generación de muestras, haga clic aquí e instale el MSI.

Es gratis.La fuente está disponible.Requiere .NET Framework para ejecutarse.Funciona sólo con XSD.(no Relax NG o DTD).

XML-XIG:Generador de instancias XML

http://xml-xig.sourceforge.net/

Este código abierto sería útil.

Microsoft Office tiene 'Ruta de información', que toma un XSD como importación y le permite definir rápida y fácilmente un editor basado en formularios para crear archivos XML.Tiene dos modos: uno en el que define el formulario y otro modo en el que crea el archivo XML completando el formulario.Creo que vino por primera vez con Office 2003 y la mayoría de la gente nunca lo instala.Me sorprende lo mucho que me gusta.

XMLBlueprint 7.5 puede hacer lo siguiente:- Genere la muestra XML de DTD - Genere la muestra XML de RAXT NG Schema - Genere la muestra XML a partir del esquema XML

La versión de código abierto de Jabón UI puede generar solicitudes SOAP desde WSDL (que contiene definiciones de tipo XSD), por lo que parece que HAY una implementación de código abierto de esta funcionalidad.Desafortunadamente, no he descubierto qué biblioteca está acostumbrada a esto.

Liquid XML Studio tiene una Generador de muestras XML asistente que creará archivos XML de muestra a partir de un esquema XML.Los datos resultantes parecen cumplir con el esquema (simplemente no pueden generar datos para patrones de expresiones regulares).

Generate an XML Sample from an XSD

El AbiertoXSD La biblioteca menciona que tienen soporte para generar instancias XML basadas en XSD.Mira eso.

Para completar agregaré http://code.google.com/p/jlibs/wiki/XSInstance, que se mencionó en una pregunta similar (pero específica de Java): ¿Alguna "API" de Java para generar XML de muestra a partir de XSD?

XML Blueprint también hace eso;instrucciones aquí

http://www.xmlblueprint.com/help/html/topic_170.htm

No es gratis, pero hay una prueba gratuita de 10 días;parece rápido y eficiente;desafortunadamente es solo para Windows.

También hay http://xsd2xml.com/, un generador de XSD a XML en línea

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