Example usage for org.xml.sax XMLFilter setParent

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

Introduction

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

Prototype

public abstract void setParent(XMLReader parent);

Source Link

Document

Set the parent reader.

Usage

From source file:org.dita.dost.util.XMLUtils.java

/**
 * Transform file with XML filters.//from ww w.ja  v  a2s . c o  m
 *
 * @param input input file
 * @param output output file
 * @param filters XML filters to transform file with, may be an empty list
 */
public static void transform(final URI input, final URI output, final List<XMLFilter> filters)
        throws DITAOTException {
    InputSource src = null;
    StreamResult result = null;
    try {
        final Transformer transformer = TransformerFactory.newInstance().newTransformer();
        XMLReader reader = getXMLReader();
        for (final XMLFilter filter : filters) {
            // ContentHandler must be reset so e.g. Saxon 9.1 will reassign ContentHandler
            // when reusing filter with multiple Transformers.
            filter.setContentHandler(null);
            filter.setParent(reader);
            reader = filter;
        }
        src = new InputSource(input.toString());
        final Source source = new SAXSource(reader, src);
        result = new StreamResult(output.toString());
        transformer.transform(source, result);
    } catch (final RuntimeException e) {
        throw e;
    } catch (final Exception e) {
        throw new DITAOTException("Failed to transform " + input + ": " + e.getMessage(), e);
    } finally {
        try {
            close(src);
        } catch (final IOException e) {
            // NOOP
        }
        try {
            close(result);
        } catch (final IOException e) {
            // NOOP
        }
    }
}

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);/*ww w .  ja va 2  s.  co  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();
}

From source file:org.opennms.core.xml.JaxbUtils.java

public static <T> XMLFilter getXMLFilterForClass(final Class<T> clazz) throws SAXException {
    final String namespace = getNamespaceForClass(clazz);
    XMLFilter filter = namespace == null ? new SimpleNamespaceFilter("", false)
            : new SimpleNamespaceFilter(namespace, true);

    LOG.trace("namespace filter for class {}: {}", clazz, filter);
    final XMLReader xmlReader = XMLReaderFactory.createXMLReader();
    xmlReader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

    filter.setParent(xmlReader);
    return filter;
}

From source file:org.xwiki.portlet.view.HTMLStreamFilter.java

/**
 * {@inheritDoc}/*from   ww w .ja  v a 2  s  . c  om*/
 * 
 * @see StreamFilter#filter(Reader, Writer)
 */
public void filter(Reader reader, Writer writer) {
    try {
        XMLReader xmlReader = XMLReaderFactory.createXMLReader("org.cyberneko.html.parsers.SAXParser");
        xmlReader.setFeature("http://cyberneko.org/html/features/balance-tags/document-fragment", true);
        xmlReader.setProperty("http://cyberneko.org/html/properties/names/elems", "match");
        xmlReader.setProperty("http://cyberneko.org/html/properties/names/attrs", "no-change");

        XMLReader parent = xmlReader;
        for (XMLFilter filter : filters) {
            filter.setParent(parent);
            parent = filter;
        }

        XHTMLWriter xhtmlWriter = new XHTMLWriter(writer);
        xhtmlWriter.setParent(parent);
        xhtmlWriter.parse(new InputSource(reader));
    } catch (Exception e) {
        LOG.error("Failed to rewrite servlet HTML.", e);
    }
}