Domanda

Stiamo sviluppando un'applicazione che comporta una notevole quantità di trasformazioni XML.Non disponiamo di dati di test di input adeguati di per sé, solo file DTD o XSD.Vorremmo generare noi stessi i nostri dati di test da questi file.Esiste un modo semplice/gratuito per farlo?

Modificare

Apparentemente non esistono strumenti gratuiti per questo e sono d'accordo che OxygenXML sia uno dei migliori strumenti per questo.

È stato utile?

Soluzione

Penso che l'ossigeno (http://www.oxygenxml.com/) lo fa anche lui, ma questo è un altro prodotto commerciale.È carino, però...Lo consiglio vivamente a chiunque lavori molto su XML.È disponibile anche in un bel plugin Eclipse.

Credo che esista una prova gratuita di 30 giorni con tutte le funzionalità.

Altri suggerimenti

In Visual Studio 2008 SP1 e versioni successive Esploratore di schemi XML può creare un documento XML con alcuni dati di esempio di base:

  1. Apri il tuo documento XSD
  2. Passa a XML Schema Explorer
  3. Fare clic con il pulsante destro del mouse sul nodo radice e scegliere "Genera Xml di esempio"

Screenshot of the XML Schema Explorer

Nelle versioni recenti del libero e open source Eclisse IDE puoi generare documenti XML da file DTD e XSD.Fare clic con il tasto destro su un determinato file *.dtd o *.xsd e selezionare "Genera -> File XML...".Puoi scegliere quale elemento root generare e se devono essere generati attributi ed elementi opzionali.

Ovviamente puoi utilizzare Eclipse anche per creare e modificare i tuoi file di schema DTD e XSD.E non è necessario installare alcun plugin.È incluso nella distribuzione standard.

Per gli utenti di Intellij Idea:

Dai un'occhiata a Strumenti -> Azioni XML

enter image description here

Sembra funzionare molto bene (per quanto ho testato).

Modificare:

Come menzionato da @naXa, ora puoi anche fare clic con il pulsante destro del mouse sul file XSD e fare clic su "Genera documento XML da schema XSD..."

Il processore disponibile su Sourceforge.net eseguirà la generazione di test case xml per qualsiasi XSD.È disponibile un tutorial per mostrarti come generare i tuoi esempi di test, incluso l'utilizzo di suggerimenti sui contenuti per garantire esempi realistici, non solo spazzatura casuale.

Il tutorial è disponibile qui:http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

E ulteriori informazioni sullo strumento, che utilizza lo standard OASIS Content Assembly Mechanism (CAM) per rifattorizzare il tuo XSD in una struttura più compatibile con XSLT, possono essere trovate dal sito web delle risorse: http://www.jcam.org.uk

Divertiti, DW

Puoi utilizzare il generatore di istanze XML che fa parte di Convalidatore multi-schema Sun/Oracle.

È README.txt afferma:

Sun XML Generator è uno strumento Java per generare vari istanze XML da diversi tipi di schemi.Supporta DTD, Rilassa lo spazio dei nomi, rilassati, TREX e un sottoinsieme di Schema XML W3C Parte 1.[...]

Questo è uno strumento di riga di comando che può generare istanze sia valide che non valide dagli schemi.Può essere utilizzato per generare casi di test per applicazioni XML che devono essere conformi a un particolare schema.

Scarica e decomprimi xmlgen.zip dal pagina di download di msv ed esegui il seguente comando per ottenere istruzioni dettagliate sull'utilizzo:

java -jar xmlgen.jar -help

Lo strumento sembra essere rilasciato con licenza BSD;il codice sorgente è accessibile da Qui

XMLSpy lo fa per te, anche se non è gratuito...

Credo che Studio XML liquido lo fa per te ed è gratuito, ma non l'ho usato personalmente per creare dati di test.

Sembra che nessuno sia riuscito a rispondere alla domanda finora :)

Utilizzo MOXy di EclipseLink per generare dinamicamente classi di associazione e quindi esaminare ricorsivamente i tipi associati.È un po' pesante, ma consente l'inserimento del valore XPath una volta istanziata l'albero degli oggetti:

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 è un metodo ricorsivo piuttosto semplice:

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

Convertire tutto in XML è piuttosto semplice:

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

Puoi anche utilizzare XMLPad (gratuito) trovato qui http://www.wmhelp.com per generare i tuoi campioni xml.Dal menù:XSD -> genera un file XML di esempio.

Microsoft ha pubblicato come esempio uno strumento "generatore di documenti". Questo è un articolo che descrive in dettaglio l'architettura e il funzionamento dell'app di esempio.

Se vuoi solo eseguire lo strumento di generazione del campione, clicca qui e installare l'MSI.

È gratis.La fonte è disponibile.Richiede .NET Framework per l'esecuzione.Funziona solo con XSD.(non Relax NG o DTD).

XML-XIG:Generatore di istanze XML

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

Questo opensource sarebbe utile.

Microsoft Office ha "InfoPath', che accetta un XSD come importazione e consente di definire rapidamente e facilmente un editor basato su moduli per la creazione di file XML.Ha due modalità: una in cui definisci il modulo e un'altra modalità in cui crei il file XML compilando il modulo.Credo che sia arrivato per la prima volta con Office 2003 e la maggior parte delle persone non lo installa mai.Mi sciocca quanto mi piaccia.

XMLBlueprint 7.5 può eseguire le seguenti operazioni:- Generare il campione XML da DTD - Generare il campione XML dallo schema rilassante - generare XML di esempio dallo schema XML

La versione open source di SoapUI può generare richieste SOAP da WSDL (che contiene definizioni di tipo XSD), quindi sembra che esista un'implementazione open source di questa funzionalità.Sfortunatamente, non ho capito quale libreria sia abituata a questo.

Liquid XML Studio ha un file Generatore di campioni XML procedura guidata che creerà file XML di esempio da uno schema XML.I dati risultanti sembrano essere conformi allo schema (semplicemente non possono generare dati per modelli regex).

Generate an XML Sample from an XSD

IL OpenXSD La libreria menziona il supporto per la generazione di istanze XML basate su XSD.Controlla quello.

Per completezza aggiungo http://code.google.com/p/jlibs/wiki/XSInstance, che è stato menzionato in una domanda simile (ma specifica per Java): Qualche "API" Java per generare XML di esempio da XSD?

Anche XML Blueprint fa lo stesso;istruzioni qui

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

Non è gratuito, ma è disponibile una prova gratuita di 10 giorni;sembra veloce ed efficiente;sfortunatamente è solo Windows.

C'è anche http://xsd2xml.com/, un generatore online da XSD a XML

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top