List of usage examples for org.xml.sax XMLReader setEntityResolver
public void setEntityResolver(EntityResolver resolver);
From source file:org.springframework.oxm.support.AbstractMarshaller.java
/** * Create an {@code XMLReader} that this marshaller will when passed an empty {@code SAXSource}. * @return the XMLReader/*from w w w . j av a 2 s.c o m*/ * @throws SAXException if thrown by JAXP methods */ @SuppressWarnings("deprecation") // on JDK 9 protected XMLReader createXmlReader() throws SAXException { XMLReader xmlReader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader(); xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", !isSupportDtd()); xmlReader.setFeature("http://xml.org/sax/features/external-general-entities", isProcessExternalEntities()); if (!isProcessExternalEntities()) { xmlReader.setEntityResolver(NO_OP_ENTITY_RESOLVER); } return xmlReader; }
From source file:org.theospi.portfolio.shared.control.ContentResourceUriResolver.java
public Source resolve(String href, String base) throws TransformerException { try {//from w ww . j a v a2 s .com String accessUrl = getServerConfigurationService().getAccessUrl(); String url = href.replaceAll(accessUrl, ""); // We depend on these resolving as content entities (e.g., /content/group/<site> or /content/user/<user>), // so provide some assistance and consistency with metaobj resolution. // Check if this already resolves as a content entity and, if not, try again by prepending /content/. Reference ref = getEntityManager().newReference(url); Object entity = ref.getEntity(); if (entity == null || !(entity instanceof ContentResource)) { if (!url.startsWith("/content/")) { url = "/content" + (url.startsWith("/") ? "" : "/") + url; ref = getEntityManager().newReference(url); entity = ref.getEntity(); } if (entity == null || !(entity instanceof ContentResource)) { String msg = "Could not resolve URI as a content resource: " + href; logger.info(msg); throw new TransformerException(msg); } } ContentResource res = (ContentResource) entity; StreamSource strs = new StreamSource(res.streamContent()); SAXSource ss = new SAXSource(new InputSource(strs.getInputStream())); CatalogResolver resolver = new CatalogResolver(); String appUrl = getServerConfigurationService().getServerUrl(); try { resolver.getCatalog().parseCatalog(appUrl + "/osp-common-tool/dtd/catalog.xml"); XMLReader xread = XMLReaderFactory.createXMLReader(); xread.setEntityResolver(resolver); ss.setXMLReader(xread); } catch (MalformedURLException e) { logger.error(e); } catch (IOException e) { logger.error(e); } catch (SAXException e) { logger.error(e); } return ss; } catch (ServerOverloadException e) { logger.error("", e); } return null; }
From source file:org.topazproject.xml.transform.EntityResolvingSource.java
private static XMLReader createXMLReader(EntityResolver resolver) throws SAXException { try {/*from w w w .j av a2 s . c o m*/ XMLReader rdr = XMLReaderFactory.createXMLReader(xmlReaderCName); rdr.setEntityResolver(resolver); return rdr; } catch (SAXException se) { log.error("Unable to create XMLReader from " + xmlReaderCName, se); throw se; } }
From source file:org.wyona.yanel.impl.resources.TestingControlResource.java
/** * //from w w w. ja v a2 s . c o m */ public View getView(String viewId) { if (request.getHeader("User-Agent").indexOf("rv:1.7") < 0) { ajaxBrowser = true; } try { setLocations(); } catch (Exception e) { // sb.append("<p>Could not get the Locations: " + e + "</p>"); log.error(e.getMessage(), e); } View view = new View(); String mimeType = getMimeType(viewId); view.setMimeType(mimeType); try { org.wyona.yarep.core.Repository repo = getRealm().getRepository(); if (viewId != null && viewId.equals("source")) { view.setInputStream(new java.io.StringBufferInputStream(getScreen())); view.setMimeType("application/xml"); return view; } String[] xsltPath = getXSLTPath(getPath()); if (xsltPath != null) { // create reader: XMLReader xmlReader = XMLReaderFactory.createXMLReader(); CatalogResolver catalogResolver = new CatalogResolver(); xmlReader.setEntityResolver(catalogResolver); // create xslt transformer: SAXTransformerFactory tf = (SAXTransformerFactory) TransformerFactory.newInstance(); TransformerHandler[] xsltHandlers = new TransformerHandler[xsltPath.length]; for (int i = 0; i < xsltPath.length; i++) { xsltHandlers[i] = tf .newTransformerHandler(new StreamSource(repo.getNode(xsltPath[i]).getInputStream())); xsltHandlers[i].getTransformer().setParameter("yanel.path.name", org.wyona.commons.io.PathUtil.getName(getPath())); xsltHandlers[i].getTransformer().setParameter("yanel.path", getPath()); xsltHandlers[i].getTransformer().setParameter("yanel.back2context", PathUtil.backToContext(realm, getPath())); xsltHandlers[i].getTransformer().setParameter("yarep.back2realm", PathUtil.backToRealm(getPath())); xsltHandlers[i].getTransformer().setParameter("language", getRequestedLanguage()); } // create i18n transformer: I18nTransformer2 i18nTransformer = new I18nTransformer2("global", getRequestedLanguage(), getRealm().getDefaultLanguage()); i18nTransformer.setEntityResolver(catalogResolver); // create xinclude transformer: XIncludeTransformer xIncludeTransformer = new XIncludeTransformer(); ResourceResolver resolver = new ResourceResolver(this); xIncludeTransformer.setResolver(resolver); // create serializer: Serializer serializer = SerializerFactory.getSerializer(SerializerFactory.XHTML_STRICT); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // chain everything together (create a pipeline): xmlReader.setContentHandler(xsltHandlers[0]); for (int i = 0; i < xsltHandlers.length - 1; i++) { xsltHandlers[i].setResult(new SAXResult(xsltHandlers[i + 1])); } xsltHandlers[xsltHandlers.length - 1].setResult(new SAXResult(xIncludeTransformer)); xIncludeTransformer.setResult(new SAXResult(i18nTransformer)); i18nTransformer.setResult(new SAXResult(serializer.asContentHandler())); serializer.setOutputStream(baos); // execute pipeline: xmlReader.parse(new InputSource(new java.io.StringBufferInputStream(getScreen()))); // write result into view: view.setInputStream(new ByteArrayInputStream(baos.toByteArray())); return view; } log.debug("Mime-Type: " + mimeType); view.setInputStream(new java.io.StringBufferInputStream(getScreen())); return view; } catch (Exception e) { log.error(e + " (" + getPath() + ", " + getRealm() + ")", e); } view.setInputStream(new java.io.StringBufferInputStream(getScreen())); return view; }
From source file:petascope.util.XMLUtil.java
private static Builder newBuilder(boolean ignoreDTD) { XMLReader xmlReader = null; try {/*from w w w . ja v a 2s. co m*/ xmlReader = factory.newSAXParser().getXMLReader(); if (ignoreDTD) { xmlReader.setEntityResolver(new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { return new InputSource(new StringReader("")); } }); xmlReader.setErrorHandler(new ErrorHandler() { @Override public void warning(SAXParseException saxpe) throws SAXException { log.warn("XML parser warning: ", saxpe.getMessage()); } @Override public void error(SAXParseException saxpe) throws SAXException { throw saxpe; } @Override public void fatalError(SAXParseException saxpe) throws SAXException { throw saxpe; } }); } } catch (Exception ex) { ex.printStackTrace(); } return new Builder(xmlReader); }
From source file:xbird.xquery.dm.instance.DocumentTableModel.java
private static final XMLReader getXMLReader(final DocumentTableBuilder handler, final boolean parseAsHtml, final boolean resolveEntity) { final XMLReader myReader; try {/*from ww w. j a v a 2 s . co m*/ if (parseAsHtml) { Class clazz = ClassResolver.get(HTML_PARSER_CLASS); assert (clazz != null); myReader = ObjectUtils.<XMLReader>instantiate(clazz); } else { final SAXParserFactory factory; if (hasSunXerces) { factory = ObjectUtils .instantiate("com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl", null); } else { factory = SAXParserFactory.newInstance(); } factory.setNamespaceAware(true); SAXParser parser = factory.newSAXParser(); myReader = parser.getXMLReader(); } } catch (Exception e) { throw new XQRTException("Creating SAX XMLReader failed", e); } // setup handlers (requires saxHandler) myReader.setContentHandler(handler); try { myReader.setProperty("http://xml.org/sax/properties/lexical-handler", handler); myReader.setFeature("http://xml.org/sax/features/validation", true); // Validate the document and report validity errors. if (!parseAsHtml) { myReader.setFeature("http://apache.org/xml/features/validation/dynamic", true); // The parser will validate the document only if a grammar is specified. myReader.setFeature("http://apache.org/xml/features/validation/schema", true); // Turn on XML Schema validation by inserting an XML Schema validator into the pipeline. } } catch (Exception e) { throw new XQRTException("Configuaring SAX XMLReader failed.", e); } // setup entity resolver if (resolveEntity) { org.apache.xml.resolver.CatalogManager catalog = org.apache.xml.resolver.CatalogManager .getStaticManager(); catalog.setIgnoreMissingProperties(true); catalog.setPreferPublic(true); catalog.setUseStaticCatalog(false); EntityResolver resolver = new org.apache.xml.resolver.tools.CatalogResolver(catalog); myReader.setEntityResolver(resolver); } return myReader; }