package test;

import java.io.*;
import java.util.zip.GZIPInputStream;

import javax.xml.stream.*;

import org.codehaus.stax2.*;
import org.codehaus.stax2.validation.*;

Simple test driver for testing pass-through copying using new StAX2 methods.
/** * Simple test driver for testing pass-through copying using new StAX2 * methods. */
public class TestStreamCopier { final static boolean ENABLE_DTD_VALIDATION = false; //final static boolean ENABLE_DTD_VALIDATION = true; protected TestStreamCopier() { } protected XMLInputFactory2 getFactory() { XMLInputFactory f = XMLInputFactory.newInstance(); //System.out.println("Factory instance: "+f.getClass()); f.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); //f.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE); //f.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE); f.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE); f.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.TRUE); f.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.FALSE); /* f.setProperty(XMLInputFactory2.P_REPORT_PROLOG_WHITESPACE, Boolean.TRUE); */ return (XMLInputFactory2) f; } protected XMLOutputFactory2 getOutputFactory() { XMLOutputFactory f = XMLOutputFactory.newInstance(); f.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, //Boolean.TRUE Boolean.FALSE ); return (XMLOutputFactory2) f; } protected void test(String input, OutputStream out) throws Exception { XMLInputFactory2 ifact = getFactory(); XMLOutputFactory2 of = getOutputFactory(); /* Let's have special handling for gzipped stuff... */ XMLStreamReader2 sr; if (input.endsWith(".gz")) { InputStream in = new GZIPInputStream(new FileInputStream(new File(input))); sr = (XMLStreamReader2)ifact.createXMLStreamReader(in); } else { sr = (XMLStreamReader2)ifact.createXMLStreamReader(new File(input)); } //URL url = new URL("http://www.isb-sib.ch/~ejain/uniprot-rdf/data/taxonomy.rdf.gz"); //sr = (XMLStreamReader2)ifact.createXMLStreamReader(in); //XMLStreamWriter2 sw = (XMLStreamWriter2) of.createXMLStreamWriter(out); XMLStreamWriter2 sw = (XMLStreamWriter2) of.createXMLStreamWriter(out, "ISO-8859-1"); //XMLStreamWriter2 sw = (XMLStreamWriter2) of.createXMLStreamWriter(out, "UTF-8"); //System.err.println("[XMLStreamWriter: "+sw.getClass()+"]"); //int count = 0; for (int type = sr.getEventType(); type !=XMLStreamConstants.END_DOCUMENT; type = sr.next()) { if (type == XMLStreamConstants.DTD) { if (ENABLE_DTD_VALIDATION) { DTDInfo info = sr.getDTDInfo(); if (info != null) { DTDValidationSchema vld = info.getProcessedDTDSchema(); if (vld != null) { System.err.println("Attaching DTD schema: "+vld); sw.validateAgainst(vld); } } } } else if (type == XMLStreamConstants.COMMENT) { //System.err.println("Comment: '"+sr.getText()+"'"); //if (true) throw new Error("comment"); } if (type == XMLStreamConstants.CHARACTERS) { //sw.writeCharacters(sr.getText()); //sw.writeCharacters(sr.getTextCharacters(), sr.getTextStart(), sr.getTextLength()); sw.copyEventFromReader(sr, false); } else if (type == XMLStreamConstants.CDATA) { sw.writeCharacters(sr.getText()); //sw.writeCharacters(sr.getTextCharacters(), sr.getTextStart(), sr.getTextLength()); } else if (type == XMLStreamConstants.END_ELEMENT) { sw.writeEndElement(); } else { sw.copyEventFromReader(sr, false); } /* if (++count % 1000 == 100) { System.err.println("#"+count); } */ } /* do { sw.copyEventFromReader(sr, false); sr.next(); } while (sr.hasNext()); */ sr.close(); sw.close(); } public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java ... "+TestStreamCopier.class+" [file]"); System.exit(1); } try { new TestStreamCopier().test(args[0], System.out); System.out.flush(); } catch (Throwable t) { System.err.println("Error: "+t); t.printStackTrace(); } } }