Como gerar uma amostra de documentos XML a partir do DTD ou do XSD?
Editar
[[1]} aparentemente não há ferramentas livres para isso, e eu concordo que Oxigenxml é uma das melhores ferramentas para isso.19 answers
Acredito que há um julgamento de 30 dias livre e completo.
No Visual Studio 2008 SP1 e mais tarde o XML Schema Explorer pode criar um documento XML com alguns dados básicos de amostra:
- Abra o seu documento XSD
- mudar para XML Schema Explorer
- carregue com o botão direito no nó raiz e escolha "Gerar amostra Xml"
Nas versões recentes do código livre e aberto Eclipse, poderá gerar documentos XML a partir de ficheiros DTD e XSD. Clique com o botão direito num dado *.dtd ou *.ficheiro xsd e seleccione " gerar - > ficheiro XML...". Você pode escolher qual o elemento raiz a gerar e se atributos e elementos opcionais devem ser gerados.
Claro que pode usar o Eclipse para criar e editar os seus ficheiros DTD e XSD schema, também. E você não precisa instalar quaisquer plugins. Está incluído na norma distribuicao.
Para utilizadores de ideias do Intelij:
Veja as ferramentas - > acções XML
Parece funcionar muito bem (tanto quanto eu testei).
Editar:
Como mencionado por @naXa, poderá agora também carregar com o botão direito no ficheiro XSD e carregar em "gerar o documento XML a partir do esquema XSD..."
O camprocessador disponível em 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 usando 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 está usando o conteúdo OASIS O padrão do mecanismo de montagem (CAM) para refacturar o seu XSD numa estrutura mais amigável do XSLT-pode ser encontrado na página web do recurso - http://www.jcam.org.uk
Divirta-se, DWPode usar o gerador de instância XML que faz parte do validador Sun / Oracle Multi-Schema .
É README.estado txt:O gerador Sun XML é uma ferramenta Java para gerar várias instâncias XML de vários tipos de esquemas. Suporta DTD, relaxa o espaço de nomes, relaxa o núcleo, TREX, and a subset of W3C XML Schema Part 1. [...]
Esta é uma ferramenta de linha de comandos que pode gerar tanto válida como inválida exemplos de esquemas. Pode ser utilizado para a gerar os casos de teste para XML aplicações que precisam estar em conformidade com um esquema particular.
Transferir e desfazer xmlgen.zip
da página de download do msv e executar o seguinte comando para obter instruções de Utilização detalhadas:
java -jar xmlgen.jar -help
A ferramenta parece ser lançada sob uma licença BSD; o código-fonte está acessível a partir de aqui
O XMLSpy faz isso por ti, embora isso não seja de graça...
Acredito que o Liquid Xml Studio o faz por si e é gratuito, mas não o usei pessoalmente para criar dados de teste.
Eu uso o MOXy da EclipseLink para gerar dinamicamente classes de ligação e depois passo recursivamente pelos tipos de ligação. É um pouco pesado, mas permite a injecção do valor de XPath assim que a árvore de objectos estiver 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 muito 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);
Também pode usar o XMLPad (livre de usar) encontrado aqui http://www.wmhelp.com para gerar as suas amostras de xml. A partir do menu : XSD -> gerar um ficheiro XML de exemplo.
A Microsoft publicou uma ferramenta "document generator" como amostra. Este é um artigo que descreve a arquitectura e o funcionamento da aplicação de amostras com algum detalhe.
Se só quiser executar a ferramenta de geração de amostras, Carregue aqui e instale o MSI.
É grátis. A fonte está disponível. Requer que o Framework. net funcione. Só funciona com XSD. (não relaxar NG ou DTD).XML-XIG: XML Instance Generator
Este recurso seria útil.O Microsoft Office tem ' InfoPath ', que toma um XSD como uma importação e permite-lhe definir rápida e facilmente um editor baseado no formulário para criar ficheiros XML. Ele tem dois modos - um onde você define o formulário, e outro modo onde você cria o arquivo XML, preenchendo o formulário. Creio que veio primeiro com o escritório 2003, e a maioria das pessoas nunca o instala. Choca-me o quanto gosto.
XMLBlueprint 7.5 pode fazer o seguinte: - gerar uma amostra de xml a partir do dtd - gerar amostra xml a partir do esquema relax ng - gerar a amostra xml do esquema xml
A versão de código aberto de SoapUI pode gerar pedidos de SOAP a partir do WSDL (que contém definições de tipo XSD), por isso parece que existe uma implementação de código aberto desta funcionalidade. Infelizmente, ainda não descobri a que Biblioteca está habituada.
O Liquid XML Studio tem um assistenteGerador de amostras XML que irá compilar ficheiros XML de exemplo a partir de um esquema XML. Os dados resultantes parecem estar em conformidade com o esquema (ele simplesmente não pode gerar dados para padrões regex).
A Biblioteca OpenXSD menciona que eles têm suporte para gerar instâncias XML com base no XSD. Olha para isto.
Para ser completo, vou adicionar http://code.google.com/p/jlibs/wiki/XSInstance , que foi mencionado numa pergunta semelhante (mas específica de Java): qualquer "API" Java para gerar uma amostra de XML do XSD?
O modelo XML também faz isso; as instruções aqui
Não é grátis, mas há um teste de 10 dias livre; parece rápido e eficiente; infelizmente é apenas Windows.Também há http://xsd2xml.com/, um gerador XSD online para XML