Frage

Wir entwickeln eine Anwendung, die eine erhebliche Menge an XML-Transformationen erfordert.Wir haben keine eigentlichen Eingabetestdaten, sondern nur DTD- oder XSD-Dateien.Aus diesen Dateien möchten wir unsere Testdaten selbst generieren.Gibt es eine einfache/kostenlose Möglichkeit, das zu tun?

Bearbeiten

Dafür gibt es offenbar keine kostenlosen Tools, und ich stimme zu, dass OxygenXML dafür eines der besten Tools ist.

War es hilfreich?

Lösung

Ich denke, Sauerstoff (http://www.oxygenxml.com/) macht das auch, aber das ist ein anderes kommerzielles Produkt.Es ist aber schön...Ich würde es jedem wärmstens empfehlen, der viel mit XML arbeitet.Es kommt auch in einem schönen Eclipse-Plugin.

Ich glaube, dass es eine kostenlose 30-Tage-Testversion mit vollem Funktionsumfang gibt.

Andere Tipps

In Visual Studio 2008 SP1 und höher XML-Schema-Explorer kann ein XML-Dokument mit einigen grundlegenden Beispieldaten erstellen:

  1. Öffnen Sie Ihr XSD-Dokument
  2. Wechseln Sie zum XML-Schema-Explorer
  3. Klicken Sie mit der rechten Maustaste auf den Stammknoten und wählen Sie „Beispiel-XML generieren“.

Screenshot of the XML Schema Explorer

In den neuesten Versionen der kostenlosen und Open Source Finsternis IDE können Sie XML-Dokumente aus DTD- und XSD-Dateien generieren.Klicken Sie mit der rechten Maustaste auf eine bestimmte *.dtd- oder *.xsd-Datei und wählen Sie „Generieren -> XML-Datei ...“.Sie können auswählen, welches Stammelement generiert werden soll und ob optionale Attribute und Elemente generiert werden sollen.

Natürlich können Sie Eclipse auch zum Erstellen und Bearbeiten Ihrer DTD- und XSD-Schemadateien verwenden.Und Sie müssen keine Plugins installieren.Es ist in der Standardverteilung enthalten.

Für Intellij Idea-Benutzer:

Schauen Sie sich Extras -> XML-Aktionen an

enter image description here

Scheint sehr gut zu funktionieren (soweit ich es getestet habe).

Bearbeiten:

Wie von @naXa erwähnt, können Sie jetzt auch mit der rechten Maustaste auf die XSD-Datei klicken und auf „XML-Dokument aus XSD-Schema generieren …“ klicken.

Der auf Sourceforge.net verfügbare Camprozessor führt die Generierung von XML-Testfällen für jede XSD durch.Es gibt ein Tutorial, das Ihnen zeigt, wie Sie Ihre eigenen Testbeispiele erstellen – einschließlich der Verwendung von Inhaltshinweisen, um realistische Beispiele und nicht nur zufällige Junk-Beispiele sicherzustellen.

Das Tutorial gibt es hier:http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

Weitere Informationen zu dem Tool, das den OASIS Content Assembly Mechanism (CAM)-Standard verwendet, um Ihr XSD in eine XSLT-freundlichere Struktur umzuwandeln, finden Sie auf der Ressourcen-Website. http://www.jcam.org.uk

Viel Spaß, DW

Sie können den XML-Instanzgenerator verwenden, der Teil von ist Sun/Oracle Multi-Schema-Validator.

In der Datei README.txt heißt es:

Sun XML Generator ist ein Java-Tool zum Generieren verschiedener XML-Instanzen aus verschiedene Arten von Schemata.Es unterstützt DTD, RELAX Namespace, RELAX Core, TREX und eine Teilmenge des W3C XML-Schemas Teil 1.[...]

Dies ist ein Befehlszeilentool, das sowohl gültige als auch ungültige Instanzen aus Schemata.Es kann zur Generierung von Testfällen für XML verwendet werden anwendungen, die einem bestimmten Schema entsprechen müssen.

Herunterladen und entpacken xmlgen.zip von dem MSV-Downloadseite und führen Sie den folgenden Befehl aus, um detaillierte Nutzungsanweisungen zu erhalten:

java -jar xmlgen.jar -help

Das Tool scheint unter einer BSD-Lizenz veröffentlicht zu sein;Auf den Quellcode kann zugegriffen werden Hier

XMLSpy erledigt das für Sie, obwohl das nicht kostenlos ist ...

Ich glaube das Liquid XML Studio erledigt das für Sie und ist kostenlos, ich habe es jedoch nicht persönlich zum Erstellen von Testdaten verwendet.

Scheint, als hätte bisher niemand die Frage beantworten können :)

Ich verwende MOXy von EclipseLink, um Bindungsklassen dynamisch zu generieren und dann die gebundenen Typen rekursiv durchzugehen.Es ist etwas umfangreich, ermöglicht aber die Injektion von XPath-Werten, sobald der Objektbaum instanziiert ist:

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 ist eine ziemlich einfache rekursive Methode:

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

Alles in XML zu konvertieren ist ziemlich einfach:

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

Sie können auch XMLPad (kostenlos) verwenden, das Sie hier finden http://www.wmhelp.com um Ihre XML-Beispiele zu generieren.Aus dem Menü:XSD -> Beispiel-XML-Datei generieren.

Als Beispiel hat Microsoft ein Tool „Dokumentgenerator“ veröffentlicht. Dies ist ein Artikel Hier werden die Architektur und der Betrieb der Beispiel-App ausführlich beschrieben.

Wenn Sie nur das Beispielgenerierungstool ausführen möchten, klicken Sie hier und installieren Sie das MSI.

Es ist kostenlos.Die Quelle ist verfügbar.Erfordert zur Ausführung das .NET Framework.Funktioniert nur mit XSDs.(nicht Relax NG oder DTD).

XML-XIG:XML-Instanzgenerator

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

Diese OpenSource wäre hilfreich.

Microsoft Office hat 'InfoPath', das eine XSD als Import akzeptiert und es Ihnen ermöglicht, schnell und einfach einen formularbasierten Editor zum Erstellen von XML-Dateien zu definieren.Es gibt zwei Modi – einen, in dem Sie das Formular definieren, und einen anderen Modus, in dem Sie die XML-Datei erstellen, indem Sie das Formular ausfüllen.Ich glaube, es kam erstmals mit Office 2003 und die meisten Leute installieren es nie.Es schockiert mich, wie sehr es mir gefällt.

XMLBlueprint 7.5 kann Folgendes tun:- Beispiel-XML aus dtd generieren - Generieren von Beispiel-XML aus Relax ng-Schema - Beispiel-XML aus XML-Schema generieren

Die Open-Source-Version von SoapUI kann SOAP-Anfragen aus WSDL (das XSD-Typdefinitionen enthält) generieren, daher sieht es so aus, als gäbe es eine Open-Source-Implementierung dieser Funktionalität.Leider habe ich nicht herausgefunden, welche Bibliothek das gewohnt ist.

Liquid XML Studio verfügt über eine XML-Beispielgenerator Assistent, der Beispiel-XML-Dateien aus einem XML-Schema erstellt.Die resultierenden Daten scheinen dem Schema zu entsprechen (es können einfach keine Daten für Regex-Muster generiert werden).

Generate an XML Sample from an XSD

Der OpenXSD Die Bibliothek erwähnt, dass sie die Generierung von XML-Instanzen basierend auf XSD unterstützt.Schau dir das an.

Der Vollständigkeit halber füge ich hinzu http://code.google.com/p/jlibs/wiki/XSInstance, was in einer ähnlichen (aber Java-spezifischen) Frage erwähnt wurde: Gibt es eine Java-API zum Generieren von Beispiel-XML aus XSD?

XML Blueprint macht das auch;Anleitung hier

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

Es ist nicht kostenlos, aber es gibt eine 10-tägige kostenlose Testversion;es scheint schnell und effizient zu sein;Leider ist es nur Windows.

Es gibt auch http://xsd2xml.com/, ein Online-XSD-zu-XML-Generator

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top