private void createXMLReader(XMLReader filterChain) { if (filterChain == null) { this.xmlReader = new SaxWriter(); } else { if (filterChain instanceof XMLFilter) { // Connect the filter chain to a document reader. XMLFilter filter = (XMLFilter)filterChain; while (filter.getParent() instanceof XMLFilter) { filter = (XMLFilter)(filter.getParent()); } if (!(filter.getParent() instanceof SaxWriter)) { filter.setParent(new SaxWriter()); } // Read XML data from filter chain. this.xmlReader = filterChain; } else { throw new UnsupportedOperationException(); } } this.configureXMLReader(); }
public void setContentHandler(ContentHandler handler) { repeater.setContentHandler(handler); } public ContentHandler getContentHandler() {
public ContentHandler getContentHandler() { return repeater.getContentHandler(); }
/** Parses the given InputSource after, applying the given XMLFilter. */ private Document parseInputSourceWithFilter(InputSource s, XMLFilter f) throws SAXException, IOException { if (f != null) { // prepare an output Document Document o = db.newDocument(); // use TrAX to adapt SAX events to a Document object th.setResult(new DOMResult(o)); XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setEntityResolver(new JstlEntityResolver(pageContext)); // (note that we overwrite the filter's parent. this seems // to be expected usage. we could cache and reset the old // parent, but you can't setParent(null), so this wouldn't // be perfect.) f.setParent(xr); f.setContentHandler(th); f.parse(s); return o; } else return parseInputSource(s); }
static public XMLReader createFilteredReader(XMLReader reader, XMLFilter... filters){ XMLReader result = reader; for(XMLFilter filter : filters){ filter.setParent(result); result = filter; } return result; } }
public StylesheetTransformer setSource(XMLReader reader, InputSource in, String xsl, ContentHandler handler) throws TransformerException { if (transformerFactory == null) { transformerFactory = (SAXTransformerFactory) TransformerFactory.newInstance(); } XMLFilter filter = transformerFactory.newXMLFilter(resolver.resolve(xsl, null)); filter.setParent(reader); filter.setContentHandler(handler); this.source = new SAXSource(filter, in); return this; }
XMLFilter filter = new NamespaceFilter(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); filter.setParent(xr);
public XMLReader createXMLReader() { // foreset parser cannot change the receivers while it's working, // so we need to have one XMLFilter that works as a buffer XMLFilter buffer = new XMLFilterImpl() { public void parse(InputSource source) throws IOException, SAXException { forest.createParser().parse( source, this, this, this ); } }; XMLFilter f = new ExtensionBindingChecker(Const.RELAXNG_URI,opt,errorReceiver); f.setParent(buffer); f.setEntityResolver(opt.entityResolver); return f; } };
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { DefaultHandler defaultHandler = new DefaultHandler() { @Override public void characters(char[] ch, int start, int length) throws SAXException { //This method receives the entity as is System.out.println(new String(ch, start, length)); } }; XMLFilter xmlFilter = new XMLFilterEntityImpl(XMLReaderFactory.createXMLReader()); xmlFilter.setContentHandler(defaultHandler); String xml = "<html><head><title>title</title></head><body>&</body></html>"; xmlFilter.parse(new InputSource(new StringReader(xml))); }
new TypedTREXGrammarInterceptor(), new ExpressionPool() ); ((XMLFilter)reader).parse(args[1]); grammar = reader.getResult(); } else {
/** Parses the given InputSource after, applying the given XMLFilter. */ private Document parseInputSourceWithFilter(InputSource s, XMLFilter f) throws SAXException, IOException { if (f != null) { // prepare an output Document Document o = db.newDocument(); // use TrAX to adapt SAX events to a Document object th.setResult(new DOMResult(o)); XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setEntityResolver(new JstlEntityResolver(pageContext)); // (note that we overwrite the filter's parent. this seems // to be expected usage. we could cache and reset the old // parent, but you can't setParent(null), so this wouldn't // be perfect.) f.setParent(xr); f.setContentHandler(th); f.parse(s); return o; } else return parseInputSource(s); }
static public XMLReader createFilteredReader(XMLReader reader, XMLFilter... filters){ XMLReader result = reader; for(XMLFilter filter : filters){ filter.setParent(result); result = filter; } return result; } }
private void transformFile(final File inputFile, final File outputFile, final List<XMLFilter> filters) throws DITAOTException { if (!outputFile.getParentFile().exists() && !outputFile.getParentFile().mkdirs()) { throw new DITAOTException("Failed to create output directory " + outputFile.getParentFile().getAbsolutePath()); } try (final InputStream in = new BufferedInputStream(new FileInputStream(inputFile)); final OutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile))) { Transformer transformer = transformerFactory.newTransformer(); if (logger != null) { transformer = withLogger(transformer, logger); } 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; } final Source source = new SAXSource(reader, new InputSource(in)); source.setSystemId(inputFile.toURI().toString()); final Result result = new StreamResult(out); transformer.transform(source, result); } catch (final RuntimeException e) { throw e; } catch (final Exception e) { throw new DITAOTException("Failed to transform " + inputFile + ": " + e.getMessage(), e); } }
XMLFilter filter = new NamespaceFilter(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); filter.setParent(xr);
public XMLReader createXMLReader() { // foreset parser cannot change the receivers while it's working, // so we need to have one XMLFilter that works as a buffer XMLFilter buffer = new XMLFilterImpl() { public void parse(InputSource source) throws IOException, SAXException { forest.createParser().parse( source, this, this, this ); } }; XMLFilter f = new ExtensionBindingChecker(Const.RELAXNG_URI,opt,errorReceiver); f.setParent(buffer); f.setEntityResolver(opt.entityResolver); return f; } };
/** Parses the given InputSource after, applying the given XMLFilter. */ private Document parseInputSourceWithFilter(InputSource s, XMLFilter f) throws SAXException, IOException { if (f != null) { // prepare an output Document Document o = db.newDocument(); // use TrAX to adapt SAX events to a Document object th.setResult(new DOMResult(o)); XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setEntityResolver(new JstlEntityResolver(pageContext)); // (note that we overwrite the filter's parent. this seems // to be expected usage. we could cache and reset the old // parent, but you can't setParent(null), so this wouldn't // be perfect.) f.setParent(xr); f.setContentHandler(th); f.parse(s); return o; } else return parseInputSource(s); }
public XMLReader getXMLReader() throws SAXException { XMLReader reader = core.getXMLReader(); if(verifier==null) return reader; // no validation is necessary. XMLFilter filter = verifier.getVerifierFilter(); filter.setParent(reader); return filter; }
filter.setContentHandler(null); filter.setParent(reader); reader = filter;
XMLFilter filter = new NamespaceFilter(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); filter.setParent(xr);