Example usage for org.xml.sax XMLFilter parse

List of usage examples for org.xml.sax XMLFilter parse

Introduction

In this page you can find the example usage for org.xml.sax XMLFilter parse.

Prototype

public void parse(InputSource input) throws IOException, SAXException;

Source Link

Document

Parse an XML document.

Usage

From source file:UseXMLFilters.java

public static void main(String[] args)
        throws TransformerException, TransformerConfigurationException, SAXException, IOException {
    // Instantiate  a TransformerFactory.
    TransformerFactory tFactory = TransformerFactory.newInstance();
    // Determine whether the TransformerFactory supports The use uf SAXSource 
    // and SAXResult
    if (tFactory.getFeature(SAXSource.FEATURE) && tFactory.getFeature(SAXResult.FEATURE)) {
        // Cast the TransformerFactory to SAXTransformerFactory.
        SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
        // Create an XMLFilter for each stylesheet.
        XMLFilter xmlFilter1 = saxTFactory.newXMLFilter(new StreamSource("foo1.xsl"));
        XMLFilter xmlFilter2 = saxTFactory.newXMLFilter(new StreamSource("foo2.xsl"));
        XMLFilter xmlFilter3 = saxTFactory.newXMLFilter(new StreamSource("foo3.xsl"));

        // Create an XMLReader.
        XMLReader reader = XMLReaderFactory.createXMLReader();

        // xmlFilter1 uses the XMLReader as its reader.
        xmlFilter1.setParent(reader);//from w  w w . j a va 2 s.c om

        // xmlFilter2 uses xmlFilter1 as its reader.
        xmlFilter2.setParent(xmlFilter1);

        // xmlFilter3 uses xmlFilter2 as its reader.
        xmlFilter3.setParent(xmlFilter2);

        // xmlFilter3 outputs SAX events to the serializer.
        java.util.Properties xmlProps = OutputPropertiesFactory.getDefaultMethodProperties("xml");
        xmlProps.setProperty("indent", "yes");
        xmlProps.setProperty("standalone", "no");
        Serializer serializer = SerializerFactory.getSerializer(xmlProps);
        serializer.setOutputStream(System.out);
        xmlFilter3.setContentHandler(serializer.asContentHandler());

        // Perform the series of transformations as follows:
        //   - transformer3 gets its parent (transformer2) as the XMLReader/XMLFilter
        //     and calls transformer2.parse(new InputSource("foo.xml")).
        //   - transformer2 gets its parent (transformer1) as the XMLReader/XMLFilter
        //     and calls transformer1.parse(new InputSource("foo.xml")). 
        //   - transformer1 gets its parent (reader, a SAXParser) as the XMLReader 
        //     and calls reader.parse(new InputSource("foo.xml")).
        //   - reader parses the XML document and sends the SAX parse events to transformer1, 
        //     which performs transformation 1 and sends the output to transformer2.
        //   - transformer2 parses the transformation 1 output, performs transformation 2, and 
        //     sends the output to transformer3.
        //   - transformer3 parses the transformation 2 output, performs transformation 3,
        //     and sends the output to the serializer.
        xmlFilter3.parse(new InputSource("foo.xml"));
    }
}

From source file:Main.java

private static void transformInternal(final URIResolver xslResolver, final StreamSource xml,
        final InputSource xsl, final Map<String, Object> parameters, final StreamResult result)
        throws IOException, ParserConfigurationException, SAXException, TransformerConfigurationException,
        TransformerException {//from ww w. j a  va2 s .c  o  m
    final TransformerFactory tfactory = TransformerFactory.newInstance();
    tfactory.setURIResolver(xslResolver);

    // Does this factory support SAX features?
    if (tfactory.getFeature(SAXSource.FEATURE)) {
        // if so, we can safely cast
        final SAXTransformerFactory stfactory = ((SAXTransformerFactory) tfactory);

        // create a Templates ContentHandler to handle parsing of the
        // stylesheet
        final javax.xml.transform.sax.TemplatesHandler templatesHandler = stfactory.newTemplatesHandler();
        templatesHandler.setDocumentLocator(emptyDocumentLocator);

        final XMLFilter filter = new XMLFilterImpl();
        filter.setParent(makeXMLReader());
        filter.setContentHandler(templatesHandler);

        // parse the stylesheet
        templatesHandler.setSystemId(xsl.getSystemId());
        filter.parse(xsl);

        // set xslt parameters
        final Transformer autobot = templatesHandler.getTemplates().newTransformer();
        if (parameters != null) {
            final Iterator<String> keys = parameters.keySet().iterator();
            while (keys.hasNext()) {
                final String name = keys.next();
                final Object value = parameters.get(name);
                autobot.setParameter(name, value);
            }
        }

        // set saxon parameters
        if (parameters != null) {
            final Iterator<String> keys = parameters.keySet().iterator();
            while (keys.hasNext()) {
                String name = keys.next();
                if (name.startsWith("saxon-")) {
                    final String value = parameters.get(name).toString();
                    name = name.replaceFirst("saxon\\-", "");
                    autobot.setOutputProperty(name, value);
                }
            }
        }

        // do the transform
        // logger.debug("SAX resolving systemIDs relative to: " +
        // templatesHandler.getSystemId());
        autobot.transform(xml, result);

    } else {
        throw new IllegalStateException("Factory doesn't implement SAXTransformerFactory");
    }
}

From source file:Examples.java

/**
 * Show the Transformer as a simple XMLFilter.  This is pretty similar
 * to exampleXMLReader, except that here the parent XMLReader is created 
 * by the caller, instead of automatically within the XMLFilter.  This 
 * gives the caller more direct control over the parent reader.
 *//*from w  w  w.j a v a 2  s. c  om*/
public static void exampleXMLFilter(String sourceID, String xslID)
        throws TransformerException, TransformerConfigurationException, SAXException, IOException // , ParserConfigurationException
{
    TransformerFactory tfactory = TransformerFactory.newInstance();

    XMLReader reader = null;

    // Use JAXP1.1 ( if possible )
    try {
        javax.xml.parsers.SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
        factory.setNamespaceAware(true);
        javax.xml.parsers.SAXParser jaxpParser = factory.newSAXParser();
        reader = jaxpParser.getXMLReader();

    } catch (javax.xml.parsers.ParserConfigurationException ex) {
        throw new org.xml.sax.SAXException(ex);
    } catch (javax.xml.parsers.FactoryConfigurationError ex1) {
        throw new org.xml.sax.SAXException(ex1.toString());
    } catch (NoSuchMethodError ex2) {
    }
    if (reader == null)
        reader = XMLReaderFactory.createXMLReader();
    // The transformer will use a SAX parser as it's reader.    
    reader.setContentHandler(new ExampleContentHandler());
    try {
        reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
        reader.setFeature("http://apache.org/xml/features/validation/dynamic", true);
    } catch (SAXException se) {

        // What can we do?
        // TODO: User diagnostics.
    }

    XMLFilter filter = ((SAXTransformerFactory) tfactory).newXMLFilter(new StreamSource(xslID));

    filter.setParent(reader);

    // Now, when you call transformer.parse, it will set itself as 
    // the content handler for the parser object (it's "parent"), and 
    // will then call the parse method on the parser.
    filter.parse(new InputSource(sourceID));
}

From source file:Examples.java

/**
 * This example shows how to chain events from one Transformer
 * to another transformer, using the Transformer as a
 * SAX2 XMLFilter/XMLReader./*w  ww  .j  av  a2 s  .  c  o  m*/
 */
public static void exampleXMLFilterChain(String sourceID, String xslID_1, String xslID_2, String xslID_3)
        throws TransformerException, TransformerConfigurationException, SAXException, IOException {
    TransformerFactory tfactory = TransformerFactory.newInstance();

    Templates stylesheet1 = tfactory.newTemplates(new StreamSource(xslID_1));
    Transformer transformer1 = stylesheet1.newTransformer();

    // If one success, assume all will succeed.
    if (tfactory.getFeature(SAXSource.FEATURE)) {
        SAXTransformerFactory stf = (SAXTransformerFactory) tfactory;
        XMLReader reader = null;

        // Use JAXP1.1 ( if possible )
        try {
            javax.xml.parsers.SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
            factory.setNamespaceAware(true);
            javax.xml.parsers.SAXParser jaxpParser = factory.newSAXParser();
            reader = jaxpParser.getXMLReader();

        } catch (javax.xml.parsers.ParserConfigurationException ex) {
            throw new org.xml.sax.SAXException(ex);
        } catch (javax.xml.parsers.FactoryConfigurationError ex1) {
            throw new org.xml.sax.SAXException(ex1.toString());
        } catch (NoSuchMethodError ex2) {
        }
        if (reader == null)
            reader = XMLReaderFactory.createXMLReader();

        XMLFilter filter1 = stf.newXMLFilter(new StreamSource(xslID_1));
        XMLFilter filter2 = stf.newXMLFilter(new StreamSource(xslID_2));
        XMLFilter filter3 = stf.newXMLFilter(new StreamSource(xslID_3));

        if (null != filter1) // If one success, assume all were success.
        {
            // transformer1 will use a SAX parser as it's reader.    
            filter1.setParent(reader);

            // transformer2 will use transformer1 as it's reader.
            filter2.setParent(filter1);

            // transform3 will use transform2 as it's reader.
            filter3.setParent(filter2);

            filter3.setContentHandler(new ExampleContentHandler());
            // filter3.setContentHandler(new org.xml.sax.helpers.DefaultHandler());

            // Now, when you call transformer3 to parse, it will set  
            // itself as the ContentHandler for transform2, and 
            // call transform2.parse, which will set itself as the 
            // content handler for transform1, and call transform1.parse, 
            // which will set itself as the content listener for the 
            // SAX parser, and call parser.parse(new InputSource("xml/foo.xml")).
            filter3.parse(new InputSource(sourceID));
        } else {
            System.out.println("Can't do exampleXMLFilter because " + "tfactory doesn't support asXMLFilter()");
        }
    } else {
        System.out.println("Can't do exampleXMLFilter because " + "tfactory is not a SAXTransformerFactory");
    }
}

From source file:de.juwimm.cms.remote.ViewServiceSpringImpl.java

@Override
protected ViewComponentValue handleImportViewComponent(Integer parentId, InputStream xmlFile, boolean withMedia,
        boolean withChildren, Integer unitId, boolean useNewIds, Integer siteId, Integer fulldeploy)
        throws Exception {
    String tmpFileName = "";
    try {/*  w w w.  j  a v a2  s  .  c o  m*/
        tmpFileName = this.storeSiteFile(xmlFile);
        if (log.isInfoEnabled())
            log.info("-------------->importFile saved.");
    } catch (IOException e) {
        log.warn("Unable to copy received inputstream: " + e.getMessage(), e);
    }
    ViewComponentHbm parent = getViewComponentHbmDao().load(parentId);
    ViewComponentHbm firstChild = parent.getFirstChild();
    File preparsedXMLfile = null;
    XMLFilter filter = new XMLFilterImpl(XMLReaderFactory.createXMLReader());
    preparsedXMLfile = File.createTempFile("edition_import_preparsed_", ".xml");
    if (log.isDebugEnabled())
        log.debug("preparsedXMLfile: " + preparsedXMLfile.getAbsolutePath());
    XMLWriter xmlWriter = new XMLWriter(new OutputStreamWriter(new FileOutputStream(preparsedXMLfile)));
    filter.setContentHandler(new de.juwimm.cms.util.EditionBlobContentHandler(xmlWriter, preparsedXMLfile));
    InputSource saxIn = null;
    try {
        try {
            saxIn = new InputSource(new GZIPInputStream(new FileInputStream(tmpFileName)));
        } catch (Exception exe) {
            saxIn = new InputSource(new BufferedReader(new FileReader(tmpFileName)));
        }
    } catch (FileNotFoundException exe) {
        if (log.isDebugEnabled())
            log.error("Error at creating InputSource in paste");
    }
    filter.parse(saxIn);
    xmlWriter.flush();
    xmlWriter = null;
    filter = null;
    System.gc();
    InputSource domIn = new InputSource(new BufferedInputStream(new FileInputStream(preparsedXMLfile)));
    org.w3c.dom.Document doc = XercesHelper.inputSource2Dom(domIn);
    Hashtable<Integer, Integer> picIds = null;
    Hashtable<Integer, Integer> docIds = null;
    if (withMedia) {
        picIds = importPictures(unitId, doc, preparsedXMLfile, useNewIds);
        docIds = importDocuments(unitId, doc, preparsedXMLfile, useNewIds);
    }
    /**import persons */
    mappingPersons = new Hashtable<Long, Long>();

    Iterator it = XercesHelper.findNodes(doc, "//viewcomponent");
    while (it.hasNext()) {
        Node nodeViewComponent = (Node) it.next();
        Integer oldunitId = new Integer(((Element) nodeViewComponent).getAttribute("unitId"));
        if (oldunitId.intValue() != unitId.intValue()) {
            importPersons(unitId, doc, useNewIds, picIds);
            /**import only if not in the same unit*/
        }
    }
    ViewComponentHbm viewComponent = createViewComponentFromXml(parentId, doc, withChildren, picIds, docIds,
            useNewIds, siteId, fulldeploy, unitId);
    //importRealmsForViewComponent(doc, viewComponent, 1);
    /**import realms*/

    parent.addChild(viewComponent);
    viewComponent.setParent(parent);

    if (firstChild != null) {
        viewComponent.setNextNode(firstChild);
        firstChild.setPrevNode(viewComponent);
        parent.setFirstChild(viewComponent);
    } else {
        parent.setFirstChild(viewComponent);
    }

    return viewComponent.getDao();

}

From source file:de.juwimm.cms.remote.EditionServiceSpringImpl.java

private Document getDocumentFromFile(File preparsedXMLfile, String editionFileName) throws Exception {
    if (log.isInfoEnabled())
        log.info("Finished writing Edition to File, starting to import it as GZIP-InputStream...");
    XMLFilter filter = new XMLFilterImpl(XMLReaderFactory.createXMLReader());
    preparsedXMLfile = File.createTempFile("edition_import_preparsed_", ".xml");
    if (log.isDebugEnabled())
        log.debug("preparsedXMLfile: " + preparsedXMLfile.getAbsolutePath());
    XMLWriter xmlWriter = new XMLWriter(new OutputStreamWriter(new FileOutputStream(preparsedXMLfile)));
    filter.setContentHandler(new EditionBlobContentHandler(xmlWriter, preparsedXMLfile));
    InputSource saxIn = null;//from  w w  w . ja  v  a2 s.co m
    try {
        try {
            saxIn = new InputSource(new GZIPInputStream(new FileInputStream(editionFileName)));
        } catch (Exception exe) {
            saxIn = new InputSource(new BufferedReader(new FileReader(editionFileName)));
        }
    } catch (FileNotFoundException exe) {
        log.error("Edition file isnt available anymore. Edition needs to be deleted!");
    }
    filter.parse(saxIn);
    xmlWriter.flush();
    xmlWriter = null;
    filter = null;
    System.gc();
    if (log.isInfoEnabled())
        log.info("Finished cutting BLOBs, starting to open XML Document...");
    // BufferedReader br = new BufferedReader(new InputStreamReader(inStream, "UTF-8"));
    // InputSource in = new InputSource(br);
    InputSource domIn = new InputSource(new FileInputStream(preparsedXMLfile));
    return XercesHelper.inputSource2Dom(domIn);
}

From source file:org.kuali.rice.core.impl.config.property.JAXBConfigImpl.java

protected org.kuali.rice.core.impl.config.property.Config unmarshal(Unmarshaller unmarshaller, InputStream in)
        throws SAXException, ParserConfigurationException, IOException, IllegalStateException, JAXBException {
    SAXParserFactory spf = SAXParserFactory.newInstance();
    spf.setNamespaceAware(true);/*w  ww .  j  ava 2  s.c o m*/

    XMLFilter filter = new ConfigNamespaceURIFilter();
    filter.setParent(spf.newSAXParser().getXMLReader());

    UnmarshallerHandler handler = unmarshaller.getUnmarshallerHandler();
    filter.setContentHandler(handler);

    filter.parse(new InputSource(in));

    return (org.kuali.rice.core.impl.config.property.Config) handler.getResult();
}