The following code example illustrates how to use the XML Scripting tool programmatically from a Java application:
package com.ibm.mobileservices.xmlscripting.sample; /** * Title: XML Scripting tool Sample Application for DB2 Everyplace Sync Server * Description: Example of using the XML tool API to write custom administration utilities. * Copyright: Copyright (c) 2002 * Company: IBM */ import java.io.FileWriter; import java.io.FileReader; import com.ibm.mobileservices.xmlscripting.XMLTool; import com.ibm.mobileservices.xmlscripting.XMLToolFactory; /** * Main class for command line invocation of the XML Scripting sample tool. */ public class RunXML { private RunXML(){} /** * Method used when running as an application from the command line. * @param String[] an array of command line parameters * @return void * * Command line arguments: -x|-d filename * * -x create XML file from control database. * -d apply XML file to control database. * -v validate XML file with its DTD. * filename XML file name to process. * * Example: java com.ibm.mobileservices.xmlscripting.RunXML -x "c:\mydb.xml" * Example: java com.ibm.mobileservices.xmlscripting.RunXML -d "c:\mycommands.xml" */ public static void main(String args[]){ String filename = null; String toOrFromXML = null; int xmlType = XMLTool.ADD; String xml = null; if (args != null && (args.length > 1 && args.length < 3) ){ toOrFromXML = args[0]; //create xml or db from xml? "-x" means create xml, "-d" means populate control db from xml. filename = args[1]; //xml file name. } //check if filename is passed in otherwise display help. if (filename == null || filename.equals("") || filename.indexOf("?") > -1 || toOrFromXML.indexOf("?") > -1){ System.out.println("Command line arguments: -x|-d filename\n"+ " -x create XML file from control database.\n"+ " -d apply XML file to control database.\n"+ " -v validate XML file with its DTD.\n"+ " filename XML file name to process."+ " Example: java com.ibm.mobileservices.xmlscripting.sample.RunXML -x \ "c:\\mydb.xml\"\n"+ " Example: java com.ibm.mobileservices.xmlscripting.sample.RunXML -d \ "c:\\mycommands.xml\"\n\n"); return; } if (toOrFromXML.equalsIgnoreCase("-x") || toOrFromXML.equalsIgnoreCase("/x")) { //generate xml file: System.out.println("Generating xml file: " + filename); try{ //backUpOldFile(filename); FileWriter fileWriter = null; try{ //get ready to write to the file: fileWriter = new FileWriter(filename); //create an instance of XMLTool. Each instance opens separate //connections to the control database. It is strongly recommended //that you use one instance to operate from single thread at a time. //If you use the same instance from multiple threads, the threads will //typically be synchronized on that database connection. If that causes //a bottleneck,create multiple instances of the xml tool to use from //multiple threads. Usually that should not be needed.The only case //it may become handy is the creation and removalof users from the //system. //XMLTool xmlTool = XMLToolFactory.createXMLTool(); //set progress listener // (ProgressListener provides hooks to intercept events). //Default progress listener outputs messages to the System.out. //A custom progress listener is typically used to re-throw an exception //to abort processing of xml tags if the programmar thinks that //is necessary. xmlTool.setProgressListener (XMLToolFactory.createDefaultProgressListener()); //There are different versions of generateXML, this is one of them: xmlTool.generateXML(fileWriter,xmlType); } finally{ if (fileWriter!=null) fileWriter.close(); } System.out.println("Done generating xml file: " + filename); }catch(Exception ex){ System.out.println("Failed generating xml file."); System.out.println(ex.getMessage()); } } else if (toOrFromXML.equalsIgnoreCase("-d") || toOrFromXML.equalsIgnoreCase("/d")) { //apply xml to database: System.out.println("Applying xml file: " + filename); try{ FileReader aReader = null; try{ //get ready to read the file: aReader = new FileReader(filename); //create an instance of XML Tool: XMLTool xmlTool = XMLToolFactory.createXMLTool(); //set progress listener: xmlTool.setProgressListener (XMLToolFactory.createDefaultProgressListener()); //apply the xml commands: xmlTool.applyXML(aReader); } finally{ if (aReader!=null) aReader.close(); } System.out.println("Done applying xml."); } catch(Exception ex){ System.out.println("Failed applying xml."); System.out.println(ex.getMessage()); } } else if (toOrFromXML.equalsIgnoreCase("-v") || toOrFromXML.equalsIgnoreCase("/v")) { //validate xml System.out.println("Validating xml file: " + filename); try{ FileReader aReader = null; try{ aReader = new FileReader(filename); XMLTool xmlTool = XMLToolFactory.createXMLTool(); xmlTool.setProgressListener (XMLToolFactory.createDefaultProgressListener()); xmlTool.validateXML(aReader); } finally{ if (aReader!=null) aReader.close(); } System.out.println("Done validating xml."); } catch(Exception ex){ System.out.println("Failed validating xml."); System.out.println(ex.getMessage()); } } } }
Související koncepce
Související úlohy
Související odkazy