/** * Creates Java Source code (Object model) for the given XML Schema * @param InputSource - the InputSource representing the XML schema. * @param packageName the package for the generated source files **/ public void generateSource(InputSource source, String packageName) { //-- get default parser from Configuration Parser parser = null; try { parser = Configuration.getParser(); } catch(RuntimeException rte) {} if (parser == null) { System.out.println("fatal error: unable to create SAX parser."); return; } SchemaUnmarshaller schemaUnmarshaller = null; try { schemaUnmarshaller = new SchemaUnmarshaller(); } catch (SAXException e) { // can never happen since a SAXException is thrown // when we are dealing with an included schema e.printStackTrace(); } parser.setDocumentHandler(schemaUnmarshaller); parser.setErrorHandler(schemaUnmarshaller); try { parser.parse(source); } catch(java.io.IOException ioe) { System.out.println("error reading XML Schema file"); return; } catch(org.xml.sax.SAXException sx) { Exception except = sx.getException(); if (except == null) except = sx; if (except instanceof SAXParseException) { SAXParseException spe = (SAXParseException)except; System.out.println("SAXParseException: " + spe); System.out.print(" - occured at line "); System.out.print(spe.getLineNumber()); System.out.print(", column "); System.out.println(spe.getColumnNumber()); } else except.printStackTrace(); return; } Schema schema = schemaUnmarshaller.getSchema(); generateSource(schema, packageName); } //-- generateSource