Rick.Brown

Using DevTest to create XML sample documents from XSD specifications

Discussion created by Rick.Brown Employee on Feb 23, 2015
Latest reply on Feb 27, 2015 by Rick.Brown

Hi all --

 

I stumbled across a project that claims to generate sample XML files from an XSD specification.

https://code.google.com/p/jlibs/wiki/XSInstance

 

I downloaded the jlibs zip file, extracted it and copied all the JAR files from the lib folder into LISA_HOME/hotDeploy.

 

I then hacked the programmatic sample a little to get it working in a beanshell step in DevTest Workstation:

——

import jlibs.xml.xsd.XSParser;

 

import org.apache.xerces.xs.*;

//beanshell needs these two imports

import javax.xml.namespace.QName;

import javax.xml.transform.stream.StreamResult;

 

//my variables

projRoot = testExec.getStateValue("LISA_PROJ_ROOT");

myXSD = projRoot + "/data/xsds/myXSD.xsd”; // This is where my XSD file lives

myRootElement = “rootElement"; //Change this to the rootElement inside the XSD file that I want to use

XSModel xsModel = new XSParser().parse(myXSD);

 

//Create an instanceof XSInstance and configure various options

import jlibs.xml.xsd.XSInstance;

XSInstance xsInstance = new XSInstance();

xsInstance.minimumElementsGenerated = 2;

xsInstance.maximumElementsGenerated = 4;

xsInstance.generateOptionalElements = Boolean.TRUE; // null means random

 

//now genreate the sample xml as follows:

import jlibs.xml.sax.XMLDocument;

QName rootElement = new QName("", myRootElement);

XMLDocument sampleXml = new XMLDocument(new StreamResult(System.out), true, 4, null);

xsInstance.generate(xsModel, rootElement, sampleXml);

——

If you open the “System Messages” panel at the bottom of the Workstation window (or tail the workstation.log file), you will see a sample XML message generated.

 

This has the standard problem when generating sample documents that we have no idea which elements need to be combined for a business transaction, so the generated sample is probably useless … but DevTest performs the action fine

Therefore, I haven't put any time into writing the XML document into a string, or saving it as a file. If you want to use it, you probably want to do that by changing StreamResult.

 

If anyone finds a real use for this, where they can identify how to make actual usable sample XML messages from XSD specifications, please respond here.

 

Rick

Outcomes