Pergunta

Estamos desenvolvendo um aplicativo que envolve uma quantidade substancial de transformações XML.Não temos nenhum dado de teste de entrada adequado, apenas arquivos DTD ou XSD.Gostaríamos de gerar nossos dados de teste a partir desses arquivos.Existe uma maneira fácil/gratuita de fazer isso?

Editar

Aparentemente não existem ferramentas gratuitas para isso, e concordo que o OxygenXML é uma das melhores ferramentas para isso.

Foi útil?

Solução

Eu acho que Oxigênio (http://www.oxygenxml.com/) também faz isso, mas esse é outro produto comercial.É uma boa, no entanto...Eu o recomendo fortemente para qualquer pessoa que faça muito trabalho em XML.Ele também vem em um ótimo plugin do Eclipse.

Eu acredito que existe um teste gratuito e completo de 30 dias.

Outras dicas

No Visual Studio 2008 SP1 e posterior, o Explorador de esquema XML pode criar um documento XML com alguns dados básicos de amostra:

  1. Abra seu documento XSD
  2. Mudar para o XML Schema Explorer
  3. Clique com o botão direito no nó raiz e escolha "Gerar XML de amostra"

Screenshot of the XML Schema Explorer

Em versões recentes do software gratuito e de código aberto Eclipse IDE você pode gerar documentos XML a partir de arquivos DTD e XSD.Clique com o botão direito em um determinado arquivo *.dtd ou *.xsd e selecione "Gerar -> Arquivo XML...".Você pode escolher qual elemento raiz gerar e se atributos e elementos opcionais devem ser gerados.

É claro que você também pode usar o Eclipse para criar e editar seus arquivos de esquema DTD e XSD.E você não precisa instalar nenhum plugin.Está incluído na distribuição padrão.

Para usuários do Intellij Idea:

Dê uma olhada em Ferramentas -> Ações XML

enter image description here

Parece funcionar muito bem (pelo que testei).

Editar:

Conforme mencionado por @naXa, agora você também pode clicar com o botão direito no arquivo XSD e clicar em "Gerar documento XML a partir do esquema XSD..."

O camprocessor disponível no Sourceforge.net fará a geração de casos de teste xml para qualquer XSD.Há um tutorial disponível para mostrar como gerar seus próprios exemplos de teste - incluindo o uso de dicas de conteúdo para garantir exemplos realistas, não apenas lixo aleatório.

O tutorial está disponível aqui:http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

E mais informações sobre a ferramenta - que usa o padrão OASIS Content Assembly Mechanism (CAM) para refatorar seu XSD em uma estrutura mais amigável ao XSLT - podem ser encontradas no site de recursos - http://www.jcam.org.uk

Aproveite, DW

Você pode usar o XML Instance Generator que faz parte do Validador de vários esquemas Sun/Oracle.

São os estados README.txt:

O gerador Sun XML é uma ferramenta Java para gerar várias instâncias XML a partir de vários tipos de esquemas.Ele suporta DTD, espaço para nome de relaxamento, Relax Core, Trex e um subconjunto de esquema W3C XML Parte 1.[...]

Esta é uma ferramenta de linha de comando que pode gerar instâncias válidas e inválidas a partir de esquemas.Ele pode ser usado para gerar casos de teste para aplicativos XML que precisam estar em conformidade com um esquema específico.

Baixe e descompacte xmlgen.zip de página de download do msv e execute o seguinte comando para obter instruções detalhadas de uso:

java -jar xmlgen.jar -help

A ferramenta parece ter sido lançada sob licença BSD;o código-fonte pode ser acessado em aqui

XMLSpy faz isso por você, embora não seja de graça...

Acredito que Estúdio XML líquido faz isso para você e é gratuito, mas eu não o usei pessoalmente para criar dados de teste.

Parece que ninguém conseguiu responder à pergunta até agora :)

Eu uso o MOXy do EclipseLink para gerar dinamicamente classes de ligação e, em seguida, percorrer recursivamente os tipos vinculados.É um pouco pesado, mas permite a injeção de valor XPath assim que a árvore de objetos é instanciada:

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 é um método recursivo bastante simples:

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");
        }
    }

Converter tudo para XML é muito fácil:

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

Você também pode usar o XMLPad (de uso gratuito) encontrado aqui http://www.wmhelp.com para gerar suas amostras xml.Do cardápio:XSD -> gerar arquivo XML de amostra.

A Microsoft publicou uma ferramenta de “gerador de documentos” como exemplo. Este é um artigo que descreve a arquitetura e a operação do aplicativo de exemplo com alguns detalhes.

Se você quiser apenas executar a ferramenta de geração de amostra, Clique aqui e instale o MSI.

É grátis.A fonte está disponível.Requer que o .NET Framework seja executado.Funciona apenas com XSDs.(não Relax NG ou DTD).

XML-XIG:Gerador de instância XML

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

Este código aberto seria útil.

O Microsoft Office tem 'InfoPath', que usa um XSD como importação e permite definir de forma rápida e fácil um editor baseado em formulário para criar arquivos XML.Possui dois modos - um onde você define o formulário e outro modo onde você cria o arquivo XML preenchendo o formulário.Acredito que ele veio primeiro com o Office 2003 e a maioria das pessoas nunca o instala.Isso me choca com o quanto eu gosto disso.

XMLBlueprint 7.5 pode fazer o seguinte:- Gere a amostra XML a partir de dtd - gerar amostra xml a partir de esquema de relaxamento - gerar amostra xml do esquema XML

A versão de código aberto do SoapUI pode gerar solicitações SOAP a partir de WSDL (que contém definições de tipo XSD), então parece que EXISTE uma implementação de código aberto dessa funcionalidade.Infelizmente, não descobri qual biblioteca está acostumada com isso.

O Liquid XML Studio possui um Gerador de amostra XML assistente que criará arquivos XML de amostra a partir de um esquema XML.Os dados resultantes parecem estar em conformidade com o esquema (simplesmente não é possível gerar dados para padrões regex).

Generate an XML Sample from an XSD

O OpenXSD biblioteca menciona que eles têm suporte para geração de instâncias XML baseadas no XSD.Dê uma olhada.

Para completar, adicionarei http://code.google.com/p/jlibs/wiki/XSInstance, que foi mencionado em uma pergunta semelhante (mas específica de Java): Qualquer "API" Java para gerar XML de amostra do XSD?

O XML Blueprint também faz isso;instruções aqui

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

Não é gratuito, mas há um teste gratuito de 10 dias;parece rápido e eficiente;infelizmente é apenas Windows.

Há também http://xsd2xml.com/, um gerador on-line de XSD para XML

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top