1 38 39 package samples.transform; 40 41 import java.io.File ; 42 import java.io.InputStream ; 43 import java.io.FileInputStream ; 44 import java.io.FileOutputStream ; 45 import java.io.BufferedInputStream ; 46 import java.io.BufferedOutputStream ; 47 import java.io.FileNotFoundException ; 48 import java.io.ByteArrayOutputStream ; 49 50 import javax.xml.transform.*; 51 import javax.xml.transform.dom.*; 52 import javax.xml.transform.stream.*; 53 import javax.xml.parsers.*; 54 import org.w3c.dom.*; 55 import javax.xml.transform.sax.SAXResult ; 56 57 import javax.xml.stream.XMLStreamWriter; 58 import javax.xml.stream.XMLStreamException; 59 import com.sun.xml.fastinfoset.stax.StAXDocumentSerializer; 60 import com.sun.xml.fastinfoset.stax.SAX2StAXWriter; 61 62 79 80 public class XMLToFastInfosetStAXSerializer { 81 String _xmlFile; 82 Transformer _transformer; 83 DocumentBuilder _docBuilder; 84 DOMSource _source = null; 85 SAXResult _result = null; 86 ByteArrayOutputStream _baos; 87 88 89 public XMLToFastInfosetStAXSerializer() { 90 try { 91 _transformer = TransformerFactory.newInstance().newTransformer(); 92 _docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 93 } catch (Exception e) { 94 e.printStackTrace(); 95 } 96 } 97 98 102 void getDOMSource(File input) { 103 try { 104 FileInputStream fis = new FileInputStream (input); 105 Document document = _docBuilder.parse(fis); 106 fis.close(); 107 _source = new DOMSource(document); 108 } 109 catch (Exception e) { 110 e.printStackTrace(); 111 } 112 113 } 114 115 119 void getSAXResult(File output) { 120 try { 121 _baos = new ByteArrayOutputStream (); 122 XMLStreamWriter serializer = new StAXDocumentSerializer(_baos); 123 SAX2StAXWriter saxTostax = new SAX2StAXWriter(serializer); 124 125 _result = new SAXResult (); 126 _result.setHandler(saxTostax); 127 _result.setLexicalHandler(saxTostax); 128 129 } 130 catch (Exception e) { 131 e.printStackTrace(); 132 } 133 } 134 135 140 public void write(File input, File output) { 141 getDOMSource(input); 142 getSAXResult(output); 143 if (_source != null && _result != null) { 144 try { 145 System.out.println("Transforming "+input.getName()+ " into " + output.getName()); 146 _transformer.transform(_source, _result); 148 149 BufferedOutputStream fos = new BufferedOutputStream (new FileOutputStream (output)); 152 _baos.writeTo(fos); 153 } catch (Exception e) { 154 e.printStackTrace(); 155 } 156 System.out.println("\ndone."); 157 } else { 158 System.out.println("Source or Result could not be null."); 159 } 160 try { 161 } catch (Exception e) { 162 e.printStackTrace(); 163 } 164 } 165 169 public static void main(String [] args) { 170 if (args.length < 1 || args.length > 2) { 171 displayUsageAndExit(); 172 } 173 File input = new File (args[0]); 174 File ouput = new File (args[1]); 175 XMLToFastInfosetStAXSerializer docSerializer = new XMLToFastInfosetStAXSerializer(); 176 docSerializer.write(input, ouput); 177 } 178 179 private static void displayUsageAndExit() { 180 System.err.println("Usage: ant FIStAXSerializer or samples.stax.FISerializer XML_input_file> FI_output_file"); 181 System.exit(1); 182 } 183 184 } 185 | Popular Tags |