Skip to content

Instantly share code, notes, and snippets.

@playerjamesbattleground
Created February 5, 2014 02:38
Show Gist options
  • Save playerjamesbattleground/8816576 to your computer and use it in GitHub Desktop.
Save playerjamesbattleground/8816576 to your computer and use it in GitHub Desktop.
Generate xml from xsd
package com.sixtree.xs2xml;
import java.io.File;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.stream.StreamResult;
import jlibs.xml.Namespaces;
import jlibs.xml.sax.XMLDocument;
import jlibs.xml.xsd.XSInstance;
import jlibs.xml.xsd.XSParser;
import org.apache.xerces.xs.XSModel;
import org.xml.sax.SAXException;
/**
*
* @author leijiang
* @param arg0
* : source xsd location
* @param arg1
* : destination xml location
* @param arg2
* : root name
* @param arg3
* : target namespace (if empty string is passed in, convert to null)
*/
public class XMLGenerator {
public static void main(String[] args) {
File xsd = new File(args[0]);
XSInstance xsi = new XSInstance();
xsi.generateOptionalAttributes = true;
xsi.generateOptionalElements = true;
args[3] = args[3].equalsIgnoreCase("") ? null : args[3];
QName root = new QName(args[3], args[2]);
XSModel xsmodel = new XSParser().parse(xsd.getAbsolutePath());
xsmodel.getNamespaceItems();
XMLDocument sampleXml;
try {
sampleXml = new XMLDocument(new StreamResult(args[1]), false, 4,
null);
xsi.generate(xsmodel, root, sampleXml);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
System.out.println("Sample xml has been generated");
}
}
@m-jndl
Copy link

m-jndl commented Aug 1, 2016

Hi Kapaski,

Thanks for your code.
I tried the same in my system.

With java file:
package com.xsdtoxml;

import java.io.File;

import javax.xml.namespace.QName;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.stream.StreamResult;

import org.apache.xerces.xs.XSModel;
import org.apache.xerces.xs.XSNamespaceItem;
import org.apache.xerces.xs.XSObject;

import jlibs.xml.sax.XMLDocument;
import jlibs.xml.xsd.XSInstance;
import jlibs.xml.xsd.XSParser;

/**

  • @author leijiang

  • @param arg0

  •        : source xsd location
    
  • @param arg1

  •        : destination xml location
    
  • @param arg2

  •        : root name
    
  • @param arg3

  •        : target namespace (if empty string is passed in, convert to null)
    

    */
    public class XMLGen {
    public static void main(String[] args) {
    File xsd = new File("src/demoXSD.xsd");
    XSInstance xsi = new XSInstance();
    xsi.generateOptionalAttributes = true;
    xsi.generateOptionalElements = true;
    xsi.generateFixedAttributes = true;
    xsi.generateDefaultAttributes = true;
    xsi.generateAllChoices=true;

    // args[3] = args[3].equalsIgnoreCase("") ? null : "";
    QName root = new QName("http://ibm.org/seleniumframework", "shiporder");
    
    XSModel xsmodel = new XSParser().parse(xsd.getAbsolutePath());
    xsmodel.getNamespaceItems();
    XMLDocument sampleXml;
    for (int i = 0; i <= xsmodel.getNamespaceItems().getLength(); i++) {
        XSNamespaceItem one = xsmodel.getNamespaceItems().item(i);
        // XSNamedMap map=xsmodel.getComponents();
    
        XSObject onject = xsmodel.getAnnotations().item(i);
    
        // System.out.println(one.getSchemaNamespace());
        // System.out.println(onject.getNamespaceItem());
    
        // System.out.println(onject.getName());
        // System.out.println(onject.getNamespace());
        // System.out.println(onject.getClass());
        // System.out.println(onject.getType());
    }
    try {
    
        sampleXml = new XMLDocument(new StreamResult("src/demoXSD.xml"), false, 4, null);
        // System.out.println(xsmodel.getAnnotations().getLength());
    
        xsi.generate(xsmodel, root, sampleXml);
    
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    }
    
    System.out.println("Sample xml has been generated");
    

    }

}

Still am getting error
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.xerces.xs.XSObjectList.isEmpty()Z
at jlibs.xml.xsd.XSInstance$XSSampleVisitor$1.preProcess(XSInstance.java:265)
at jlibs.xml.xsd.XSInstance$XSSampleVisitor$1.preProcess(XSInstance.java:238)
at jlibs.core.graph.WalkerUtil.walk(WalkerUtil.java:41)
at jlibs.xml.xsd.XSInstance.generate(XSInstance.java:126)
at jlibs.xml.xsd.XSInstance.generate(XSInstance.java:93)
at com.xsdtoxml.XMLGen.main(XMLGen.java:64)

Could you please help me with issue.
Thanks & Regards,
Megha

@mehar460
Copy link

Me too facing the issue and any help would be highly appreciated. I may be missing a jar file in the classpath but couldn't figure out.

Please help!

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.xerces.xs.XSObjectList.isEmpty()Z
at jlibs.xml.xsd.XSInstance$XSSampleVisitor$1.preProcess(XSInstance.java:265)
at jlibs.xml.xsd.XSInstance$XSSampleVisitor$1.preProcess(XSInstance.java:238)
at jlibs.core.graph.WalkerUtil.walk(WalkerUtil.java:41)
at jlibs.xml.xsd.XSInstance.generate(XSInstance.java:126)
at jlibs.xml.xsd.XSInstance.generate(XSInstance.java:93)
at com.mkls.ppa.XMLGenerator1.main(XMLGenerator1.java:64)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment