Question

Nous développons une application qui implique une quantité importante de transformations XML.Nous n'avons pas de données de test d'entrée appropriées en soi, uniquement des fichiers DTD ou XSD.Nous aimerions générer nous-mêmes nos données de test à partir de ces fichiers.Existe-t-il un moyen simple/gratuit de le faire ?

Modifier

Il n'existe apparemment pas d'outils gratuits pour cela, et je conviens qu'OxygenXML est l'un des meilleurs outils pour cela.

Était-ce utile?

La solution

Je pense que l'oxygène (http://www.oxygenxml.com/) le fait aussi, mais c'est un autre produit commercial.C'est quand même sympa...Je le recommande fortement à tous ceux qui effectuent beaucoup de travail XML.Il est également livré dans un joli plugin Eclipse.

Je crois qu'il existe un essai gratuit et complet de 30 jours.

Autres conseils

Dans Visual Studio 2008 SP1 et versions ultérieures, le Explorateur de schéma XML peut créer un document XML avec quelques exemples de données de base :

  1. Ouvrez votre document XSD
  2. Passer à l'Explorateur de schémas XML
  3. Faites un clic droit sur le nœud racine et choisissez "Générer un exemple de code XML".

Screenshot of the XML Schema Explorer

Dans les versions récentes du logiciel gratuit et open source Éclipse IDE, vous pouvez générer des documents XML à partir de fichiers DTD et XSD.Faites un clic droit sur un fichier *.dtd ou *.xsd donné et sélectionnez "Générer -> Fichier XML...".Vous pouvez choisir quel élément racine générer et si les attributs et éléments facultatifs doivent être générés.

Bien entendu, vous pouvez également utiliser Eclipse pour créer et modifier vos fichiers de schéma DTD et XSD.Et vous n'avez pas besoin d'installer de plugins.Il est inclus dans la distribution standard.

Pour les utilisateurs d’Intellij Idea :

Jetez un oeil à Outils -> Actions XML

enter image description here

Semble fonctionner très bien (d'après ce que j'ai testé).

Modifier:

Comme mentionné par @naXa, vous pouvez désormais également cliquer avec le bouton droit sur le fichier XSD et cliquer sur "Générer un document XML à partir d'un schéma XSD..."

Le camprocesseur disponible sur Sourceforge.net générera des cas de test XML pour n'importe quel XSD.Un didacticiel est disponible pour vous montrer comment générer vos propres exemples de test, notamment en utilisant des astuces de contenu pour garantir des exemples réalistes, et pas seulement des exemples aléatoires.

Le tutoriel est disponible ici :http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

Et plus d'informations sur l'outil - qui utilise la norme OASIS Content Assembly Mechanism (CAM) pour refactoriser votre XSD dans une structure plus conviviale XSLT - peuvent être trouvées sur le site Web des ressources - http://www.jcam.org.uk

Profitez-en, DW

Vous pouvez utiliser le générateur d'instances XML qui fait partie du Validateur multi-schéma Sun/Oracle.

C'est le fichier README.txt qui indique :

Sun XML Generator est un outil Java permettant de générer diverses instances XML à partir de plusieurs types de schémas.Il prend en charge DTD, l’espace de noms RELAX, le noyau RELAX, TREX, et un sous-ensemble de W3C XML Schema Part 1.[...]

Il s’agit d’un outil en ligne de commande qui peut générer à la fois des fichiers valides et non valides. instances à partir de schémas.Il peut être utilisé pour générer des cas de test pour XML applications qui doivent se conformer à un schéma particulier.

Téléchargez et décompressez xmlgen.zip du page de téléchargement msv et exécutez la commande suivante pour obtenir des instructions d'utilisation détaillées :

java -jar xmlgen.jar -help

L'outil semble être publié sous une licence BSD ;le code source est accessible depuis ici

XMLEspion fait cela pour vous, même si ce n'est pas gratuit...

Je crois que Studio XML liquide le fait pour vous et est gratuit, mais je ne l'ai pas personnellement utilisé pour créer des données de test.

On dirait que personne n'a pu répondre à la question jusqu'à présent :)

J'utilise MOXy d'EclipseLink pour générer dynamiquement des classes de liaison, puis parcourir de manière récursive les types liés.C'est un peu lourd, mais il permet l'injection de valeur XPath une fois l'arborescence des objets instanciée :

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 est une méthode récursive assez 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");
        }
    }

Tout convertir en XML est assez simple :

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

Vous pouvez également utiliser XMLPad (utilisation gratuite) trouvé ici http://www.wmhelp.com pour générer vos échantillons XML.Au menu :XSD -> générer un exemple de fichier XML.

Microsoft a publié un outil "générateur de documents" à titre d'exemple. Ceci est un article qui décrit l'architecture et le fonctionnement de l'exemple d'application de manière assez détaillée.

Si vous souhaitez simplement exécuter l'outil de génération d'échantillons, Cliquez ici et installez le MSI.

C'est gratuit.La source est disponible.Nécessite le .NET Framework pour s'exécuter.Fonctionne uniquement avec les XSD.(pas Relax NG ou DTD).

XML-XIG :Générateur d'instances XML

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

Cet open source serait utile.

Microsoft Office a 'Chemin d'informations', qui prend un XSD comme importation et vous permet de définir rapidement et facilement un éditeur basé sur un formulaire pour créer des fichiers XML.Il comporte deux modes : un dans lequel vous définissez le formulaire et un autre mode dans lequel vous créez le fichier XML en remplissant le formulaire.Je crois qu'il est venu pour la première fois avec Office 2003 et que la plupart des gens ne l'installent jamais.Cela me choque de voir à quel point je l'aime.

XMLBlueprint 7.5 peut effectuer les opérations suivantes :- Générer un exemple XML à partir de DTD - Générer un exemple XML à partir du schéma Relax NG - Générer un exemple de XML à partir d’un schéma XML

La version open source de SavonUI peut générer des requêtes SOAP à partir de WSDL (qui contient des définitions de type XSD), il semble donc qu'il existe une implémentation open source de cette fonctionnalité.Malheureusement, je n'ai pas compris à quelle bibliothèque est habituée cela.

Liquid XML Studio dispose d'un Générateur d'échantillons XML Assistant qui créera des exemples de fichiers XML à partir d'un schéma XML.Les données résultantes semblent être conformes au schéma (elles ne peuvent tout simplement pas générer de données pour les modèles d'expression régulière).

Generate an XML Sample from an XSD

Le OuvertXSD La bibliothèque mentionne qu'elle prend en charge la génération d'instances XML basées sur XSD.Vérifiez cela.

Pour être complet, j'ajouterai http://code.google.com/p/jlibs/wiki/XSInstance, qui a été mentionné dans une question similaire (mais spécifique à Java) : Une "API" Java pour générer un exemple de XML à partir de XSD ?

XML Blueprint fait également cela ;instructions ici

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

Ce n'est pas gratuit, mais il existe un essai gratuit de 10 jours ;cela semble rapide et efficace ;malheureusement, c'est uniquement Windows.

Il y a aussi http://xsd2xml.com/, un générateur XSD vers XML en ligne

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top