List of usage examples for org.xml.sax XMLReader setProperty
public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException;
From source file:org.exist.util.XMLReaderObjectFactory.java
private static void setReaderProperty(XMLReader xmlReader, String propertyName, Object object) { try {// w ww . j a v a 2s . c om xmlReader.setProperty(propertyName, object); } catch (final SAXNotRecognizedException ex) { LOG.error("SAXNotRecognizedException: " + ex.getMessage()); } catch (final SAXNotSupportedException ex) { LOG.error("SAXNotSupportedException:" + ex.getMessage()); } }
From source file:org.exist.util.XMLReaderPool.java
public synchronized void returnXMLReader(XMLReader reader) { if (reader == null) { return;/*from w w w. ja v a 2 s . co m*/ } try { reader.setContentHandler(DUMMY_HANDLER); reader.setErrorHandler(DUMMY_HANDLER); reader.setProperty(Namespaces.SAX_LEXICAL_HANDLER, DUMMY_HANDLER); // DIZZZ; workaround Xerces bug. Cached DTDs cause for problems during validation parsing. final GrammarPool grammarPool = (GrammarPool) getReaderProperty(reader, XMLReaderObjectFactory.APACHE_PROPERTIES_INTERNAL_GRAMMARPOOL); if (grammarPool != null) { grammarPool.clearDTDs(); } super.returnObject(reader); } catch (final Exception e) { throw new IllegalStateException("error while returning XMLReader: " + e.getMessage(), e); } }
From source file:org.exist.xquery.functions.request.GetData.java
private Sequence parseAsXml(InputStream is) { Sequence result = Sequence.EMPTY_SEQUENCE; XMLReader reader = null; context.pushDocumentContext();/*from w w w.j a v a 2s . co m*/ try { //try and construct xml document from input stream, we use eXist's in-memory DOM implementation //we have to use CloseShieldInputStream otherwise the parser closes the stream and we cant later reread final InputSource src = new InputSource(new CloseShieldInputStream(is)); reader = context.getBroker().getBrokerPool().getParserPool().borrowXMLReader(); final MemTreeBuilder builder = context.getDocumentBuilder(); final DocumentBuilderReceiver receiver = new DocumentBuilderReceiver(builder, true); reader.setContentHandler(receiver); reader.setProperty(Namespaces.SAX_LEXICAL_HANDLER, receiver); reader.parse(src); final Document doc = receiver.getDocument(); result = (NodeValue) doc; } catch (final SAXException saxe) { //do nothing, we will default to trying to return a string below } catch (final IOException ioe) { //do nothing, we will default to trying to return a string below } finally { context.popDocumentContext(); if (reader != null) { context.getBroker().getBrokerPool().getParserPool().returnXMLReader(reader); } } return result; }
From source file:org.exist.xquery.modules.sql.ExecuteFunction.java
/** * evaluate the call to the XQuery execute() function, it is really the main entry point of this class. * * @param args arguments from the execute() function call * @param contextSequence the Context Sequence to operate on (not used here internally!) * * @return A node representing the SQL result set * * @throws XPathException DOCUMENT ME! * * @see org.exist.xquery.BasicFunction#eval(org.exist.xquery.value.Sequence[], org.exist.xquery.value.Sequence) *///from w w w . j a va2 s . co m @Override public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException { // was a connection and SQL statement specified? if (args[0].isEmpty() || args[1].isEmpty()) { return (Sequence.EMPTY_SEQUENCE); } // get the Connection long connectionUID = ((IntegerValue) args[0].itemAt(0)).getLong(); Connection con = SQLModule.retrieveConnection(context, connectionUID); if (con == null) { return (Sequence.EMPTY_SEQUENCE); } boolean preparedStmt = false; //setup the SQL statement String sql = null; Statement stmt = null; boolean executeResult = false; ResultSet rs = null; try { boolean makeNodeFromColumnName = false; MemTreeBuilder builder = context.getDocumentBuilder(); int iRow = 0; //SQL or PreparedStatement? if (args.length == 3) { // get the SQL statement sql = args[1].getStringValue(); stmt = con.createStatement(); makeNodeFromColumnName = ((BooleanValue) args[2].itemAt(0)).effectiveBooleanValue(); //execute the statement executeResult = stmt.execute(sql); } else if (args.length == 4) { preparedStmt = true; //get the prepared statement long statementUID = ((IntegerValue) args[1].itemAt(0)).getLong(); PreparedStatementWithSQL stmtWithSQL = SQLModule.retrievePreparedStatement(context, statementUID); sql = stmtWithSQL.getSql(); stmt = stmtWithSQL.getStmt(); makeNodeFromColumnName = ((BooleanValue) args[3].itemAt(0)).effectiveBooleanValue(); if (!args[2].isEmpty()) { setParametersOnPreparedStatement(stmt, (Element) args[2].itemAt(0)); } //execute the prepared statement executeResult = ((PreparedStatement) stmt).execute(); } else { //TODO throw exception } // DW: stmt can be null ? // execute the query statement if (executeResult) { /* SQL Query returned results */ // iterate through the result set building an XML document rs = stmt.getResultSet(); ResultSetMetaData rsmd = rs.getMetaData(); int iColumns = rsmd.getColumnCount(); builder.startDocument(); builder.startElement(new QName("result", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.addAttribute(new QName("count", null, null), String.valueOf(-1)); while (rs.next()) { builder.startElement(new QName("row", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.addAttribute(new QName("index", null, null), String.valueOf(rs.getRow())); // get each tuple in the row for (int i = 0; i < iColumns; i++) { String columnName = rsmd.getColumnLabel(i + 1); if (columnName != null) { String colElement = "field"; if (makeNodeFromColumnName && columnName.length() > 0) { // use column names as the XML node /** * Spaces in column names are replaced with * underscore's */ colElement = SQLUtils.escapeXmlAttr(columnName.replace(' ', '_')); } builder.startElement(new QName(colElement, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); if (!makeNodeFromColumnName || columnName.length() <= 0) { String name; if (columnName.length() > 0) { name = SQLUtils.escapeXmlAttr(columnName); } else { name = "Column: " + String.valueOf(i + 1); } builder.addAttribute(new QName("name", null, null), name); } builder.addAttribute( new QName(TYPE_ATTRIBUTE_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), rsmd.getColumnTypeName(i + 1)); builder.addAttribute(new QName(TYPE_ATTRIBUTE_NAME, Namespaces.SCHEMA_NS, "xs"), Type.getTypeName(SQLUtils.sqlTypeToXMLType(rsmd.getColumnType(i + 1)))); //get the content if (rsmd.getColumnType(i + 1) == Types.SQLXML) { //parse sqlxml value try { final SQLXML sqlXml = rs.getSQLXML(i + 1); if (rs.wasNull()) { // Add a null indicator attribute if the value was SQL Null builder.addAttribute( new QName("null", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), "true"); } else { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); InputSource src = new InputSource(sqlXml.getCharacterStream()); SAXParser parser = factory.newSAXParser(); XMLReader xr = parser.getXMLReader(); SAXAdapter adapter = new AppendingSAXAdapter(builder); xr.setContentHandler(adapter); xr.setProperty(Namespaces.SAX_LEXICAL_HANDLER, adapter); xr.parse(src); } } catch (Exception e) { throw new XPathException( "Could not parse column of type SQLXML: " + e.getMessage(), e); } } else { //otherwise assume string value final String colValue = rs.getString(i + 1); if (rs.wasNull()) { // Add a null indicator attribute if the value was SQL Null builder.addAttribute( new QName("null", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), "true"); } else { if (colValue != null) { builder.characters(SQLUtils.escapeXmlText(colValue)); } } } builder.endElement(); } } builder.endElement(); iRow++; } builder.endElement(); } else { /* SQL Query performed updates */ builder.startDocument(); builder.startElement(new QName("result", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.addAttribute(new QName("updateCount", null, null), String.valueOf(stmt.getUpdateCount())); builder.endElement(); } // Change the root element count attribute to have the correct value NodeValue node = (NodeValue) builder.getDocument().getDocumentElement(); Node count = node.getNode().getAttributes().getNamedItem("count"); if (count != null) { count.setNodeValue(String.valueOf(iRow)); } builder.endDocument(); // return the XML result set return (node); } catch (SQLException sqle) { LOG.error("sql:execute() Caught SQLException \"" + sqle.getMessage() + "\" for SQL: \"" + sql + "\"", sqle); //return details about the SQLException MemTreeBuilder builder = context.getDocumentBuilder(); builder.startDocument(); builder.startElement(new QName("exception", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); boolean recoverable = false; if (sqle instanceof SQLRecoverableException) { recoverable = true; } builder.addAttribute(new QName("recoverable", null, null), String.valueOf(recoverable)); builder.startElement(new QName("state", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.characters(sqle.getSQLState()); builder.endElement(); builder.startElement(new QName("message", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); String state = sqle.getMessage(); if (state != null) { builder.characters(state); } builder.endElement(); builder.startElement(new QName("stack-trace", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); ByteArrayOutputStream bufStackTrace = new ByteArrayOutputStream(); sqle.printStackTrace(new PrintStream(bufStackTrace)); builder.characters(new String(bufStackTrace.toByteArray())); builder.endElement(); builder.startElement(new QName("sql", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.characters(SQLUtils.escapeXmlText(sql)); builder.endElement(); if (stmt instanceof PreparedStatement) { Element parametersElement = (Element) args[2].itemAt(0); if (parametersElement.getNamespaceURI().equals(SQLModule.NAMESPACE_URI) && parametersElement.getLocalName().equals(PARAMETERS_ELEMENT_NAME)) { NodeList paramElements = parametersElement.getElementsByTagNameNS(SQLModule.NAMESPACE_URI, PARAM_ELEMENT_NAME); builder.startElement( new QName(PARAMETERS_ELEMENT_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); for (int i = 0; i < paramElements.getLength(); i++) { Element param = ((Element) paramElements.item(i)); String value = param.getFirstChild().getNodeValue(); String type = param.getAttributeNS(SQLModule.NAMESPACE_URI, TYPE_ATTRIBUTE_NAME); builder.startElement( new QName(PARAM_ELEMENT_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.addAttribute( new QName(TYPE_ATTRIBUTE_NAME, SQLModule.NAMESPACE_URI, SQLModule.PREFIX), type); builder.characters(SQLUtils.escapeXmlText(value)); builder.endElement(); } builder.endElement(); } } builder.startElement(new QName("xquery", SQLModule.NAMESPACE_URI, SQLModule.PREFIX), null); builder.addAttribute(new QName("line", null, null), String.valueOf(getLine())); builder.addAttribute(new QName("column", null, null), String.valueOf(getColumn())); builder.endElement(); builder.endElement(); builder.endDocument(); return ((NodeValue) builder.getDocument().getDocumentElement()); } finally { // close any record set or statement if (rs != null) { try { rs.close(); } catch (SQLException se) { LOG.warn("Unable to cleanup JDBC results", se); } rs = null; } if (!preparedStmt && stmt != null) { try { stmt.close(); } catch (SQLException se) { LOG.warn("Unable to cleanup JDBC results", se); } stmt = null; } } }
From source file:org.exist.xquery.xproc.ProcessFunction.java
public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException { if (args[0].isEmpty()) { return Sequence.EMPTY_SEQUENCE; }/* www . jav a 2 s . co m*/ // Sequence input = getArgument(0).eval(contextSequence, contextItem); UserArgs userArgs = new UserArgs(); Sequence pipe = args[0]; if (Type.subTypeOf(pipe.getItemType(), Type.NODE)) { if (pipe.getItemCount() != 1) { throw new XPathException(this, "Pipeline must have just ONE and only ONE element."); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter osw; try { osw = new OutputStreamWriter(baos, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new XPathException(this, "Internal error"); } XMLWriter xmlWriter = new XMLWriter(osw); SAXSerializer sax = new SAXSerializer(); sax.setReceiver(xmlWriter); try { pipe.itemAt(0).toSAX(context.getBroker(), sax, new Properties()); osw.flush(); osw.close(); } catch (Exception e) { throw new XPathException(this, e); } ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); userArgs.setPipeline(bais, XmldbURI.LOCAL_DB + "/"); } else { userArgs.setPipeline(pipe.getStringValue()); } InputStream defaultIn = null; //prepare primary input if (args.length > 2) { Sequence input = args[1]; if (Type.subTypeOf(input.getItemType(), Type.NODE)) { if (input.getItemCount() != 1) { throw new XPathException(this, "Primary input must have just ONE and only ONE element."); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter osw; try { osw = new OutputStreamWriter(baos, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new XPathException(this, "Internal error"); } XMLWriter xmlWriter = new XMLWriter(osw); SAXSerializer sax = new SAXSerializer(); sax.setReceiver(xmlWriter); try { input.itemAt(0).toSAX(context.getBroker(), sax, new Properties()); osw.flush(); osw.close(); } catch (Exception e) { throw new XPathException(this, e); } defaultIn = new ByteArrayInputStream(baos.toByteArray()); } else { defaultIn = new ByteArrayInputStream(input.getStringValue().getBytes()); } } //parse options if (args.length > 2) { parseOptions(userArgs, args[2]); } else if (args.length > 1) { parseOptions(userArgs, args[1]); } String outputResult; try { //getContext().getModuleLoadPath(); URI staticBaseURI = null; Object key = getContext().getSource().getKey(); if (key instanceof XmldbURI) { String uri = ((XmldbURI) key).removeLastSegment().toString(); if (!uri.endsWith("/")) { uri += "/"; } staticBaseURI = new URI("xmldb", "", uri, null); } else { String uri = getContext().getModuleLoadPath(); if (uri == null || uri.isEmpty()) { staticBaseURI = new URI(XmldbURI.LOCAL_DB + "/"); } else { if (uri.startsWith(XmldbURI.EMBEDDED_SERVER_URI_PREFIX)) { uri = uri.substring(XmldbURI.EMBEDDED_SERVER_URI_PREFIX.length()); } if (!uri.endsWith("/")) { uri += "/"; } staticBaseURI = new URI("xmldb", "", uri, null); } } outputResult = XProcRunner.run(staticBaseURI, context.getBroker(), userArgs, defaultIn); } catch (Exception e) { e.printStackTrace(); throw new XPathException(this, e); } if (outputResult == null || outputResult.isEmpty()) { return Sequence.EMPTY_SEQUENCE; } StringReader reader = new StringReader(outputResult); try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); InputSource src = new InputSource(reader); XMLReader xr = null; if (xr == null) { SAXParser parser = factory.newSAXParser(); xr = parser.getXMLReader(); } SAXAdapter adapter = new SAXAdapter(context); xr.setContentHandler(adapter); xr.setProperty(Namespaces.SAX_LEXICAL_HANDLER, adapter); xr.parse(src); return (DocumentImpl) adapter.getDocument(); } catch (ParserConfigurationException e) { throw new XPathException(this, "Error while constructing XML parser: " + e.getMessage(), e); } catch (SAXException e) { throw new XPathException(this, "Error while parsing XML: " + e.getMessage(), e); } catch (IOException e) { throw new XPathException(this, "Error while parsing XML: " + e.getMessage(), e); } }
From source file:org.globus.mds.bigindex.impl.database.xml.xindice.XindiceDriver.java
/** * Adds a document file to a collection. * @param parentCol - name of the parent collection * @param fileName - name of the file/* www. jav a 2 s. c om*/ * @param docName - name of the document * @return String - the document ID. * @exception Exception - if the collection does not exist. */ public String addDocumentFile(String parentCol, String fileName, String docName) throws Exception { checkInitialized(); Collection col = null; String docID = null; InputStream fis = null; try { if (this.isProfiling) { this.performanceLogger.start(); } // Create a collection instance String colURI = normalizeCollectionURI(parentCol, this.isLocal); col = DatabaseManager.getCollection(colURI); if (col == null) { String err = "XINDICE ERROR: Collection not found! " + colURI; if (logger.isDebugEnabled()) { logger.debug(err); } throw new Exception(err); } // Parse in XML using Xerces File file = new File(fileName); fis = new FileInputStream(file); SAXParserFactory spf = javax.xml.parsers.SAXParserFactory.newInstance(); spf.setNamespaceAware(true); XMLReader saxReader = spf.newSAXParser().getXMLReader(); StringSerializer ser = new StringSerializer(null); saxReader.setContentHandler(ser); saxReader.setProperty("http://xml.org/sax/properties/lexical-handler", ser); saxReader.parse(new InputSource(fis)); // Create the XMLResource and store the document XMLResource resource = (XMLResource) col.createResource(docName, "XMLResource"); resource.setContent(ser.toString()); col.storeResource(resource); docID = resource.getId(); if (logger.isDebugEnabled()) { logger.debug("STORED Document: " + colURI + "/" + docID); } resource = null; } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { logger.debug("Failed to close: " + e.getMessage(), e); } } if (col != null) { col.close(); } col = null; if (this.isProfiling) { this.performanceLogger.stop("addDocumentFile"); } } return docID; }
From source file:org.globus.mds.bigindex.impl.database.xml.xindice.XindiceDriver.java
/** * Adds a Document to a collection, where the input Document is in String form. * @param parentCol - name of the parent collection * @param docstr - String representation of the Document to add * @param docName - name of the document * @return String - the document ID./* w w w.ja va 2 s. com*/ */ public String addDocumentString(String parentCol, String docstr, String docName) throws Exception { checkInitialized(); Collection col = null; String docID = null; try { if (this.isProfiling) { this.performanceLogger.start(); } // Create a collection instance String colURI = normalizeCollectionURI(parentCol, this.isLocal); col = DatabaseManager.getCollection(colURI); if (col == null) { String err = "XINDICE ERROR: Collection not found! " + colURI; if (logger.isDebugEnabled()) { logger.debug(err); } throw new Exception(err); } // Parse in XML using Xerces StringReader reader = new StringReader(docstr); SAXParserFactory spf = javax.xml.parsers.SAXParserFactory.newInstance(); spf.setNamespaceAware(true); XMLReader saxReader = spf.newSAXParser().getXMLReader(); StringSerializer ser = new StringSerializer(null); saxReader.setContentHandler(ser); saxReader.setProperty("http://xml.org/sax/properties/lexical-handler", ser); saxReader.parse(new InputSource(reader)); reader.close(); // Create the XMLResource and store the document XMLResource resource = (XMLResource) col.createResource(docName, "XMLResource"); resource.setContent(ser.toString()); col.storeResource(resource); docID = resource.getId(); if (logger.isDebugEnabled()) { logger.debug("STORED Document: " + colURI + "/" + docID); } resource = null; } finally { if (col != null) { col.close(); } col = null; if (this.isProfiling) { this.performanceLogger.stop("addDocumentString"); } } return docID; }
From source file:org.infoscoop.request.filter.RssFilter.java
public static byte[] process(ProxyRequest request, InputStream responseStream) throws IOException { String dateTimeFormat = request.getRequestHeader("X-IS-DATETIMEFORMAT"); if (dateTimeFormat != null) { dateTimeFormat = URLDecoder.decode(dateTimeFormat, "UTF-8"); }// w ww . j ava2 s. com String freshTime = request.getRequestHeader("X-IS-FRESHTIME"); String maxCountString = request.getRequestHeader("X-IS-RSSMAXCOUNT"); int maxCount = Integer.MAX_VALUE; if (maxCountString != null) { try { int paramMaxCount = Integer.parseInt(maxCountString); if (paramMaxCount > 0) { maxCount = paramMaxCount; } } catch (NumberFormatException e) { log.warn("rssmaxcount \"" + maxCountString + "\" isn't integer value."); } } // Filtering String titleFilter = request.getRequestHeader("X-IS-TITLEFILTER"); if (titleFilter != null) titleFilter = URLDecoder.decode(titleFilter, "UTF-8"); String creatorFilter = request.getRequestHeader("X-IS-CREATORFILTER"); if (creatorFilter != null) creatorFilter = URLDecoder.decode(creatorFilter, "UTF-8"); String categoryFilter = request.getRequestHeader("X-IS-CATEGORYFILTER"); if (categoryFilter != null) categoryFilter = URLDecoder.decode(categoryFilter, "UTF-8"); // String freshDays = request.getRequestHeader("_freshdays"); // String logoffDateTime = request.getRequestHeader("_logoffdatetime"); BufferedInputStream bis = new BufferedInputStream(responseStream); boolean isAtom = isAtom(bis); XMLFilter.skipEmptyLine(bis); String pageSizeStr = request.getRequestHeader("X-IS-PAGESIZE"); int pageSize = -1; if (pageSizeStr != null) { try { pageSize = Integer.parseInt(pageSizeStr); } catch (NumberFormatException ex) { log.warn("init parameter \"rssPageSize\" has illegal value"); } } //if( pageSize < 0 ) // pageSize = 20; long start = System.currentTimeMillis(); RssResultBuilder resultBuilder = new RssJsonResultBuilder(pageSize); RssHandler handler; if (isAtom) { handler = new AtomHandler(resultBuilder, dateTimeFormat, freshTime, maxCount, titleFilter, creatorFilter, categoryFilter); } else { handler = new RssHandler(resultBuilder, dateTimeFormat, freshTime, maxCount, titleFilter, creatorFilter, categoryFilter); } try { XMLReader reader = factory.newSAXParser().getXMLReader(); reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler); reader.setEntityResolver(NoOpEntityResolver.getInstance()); reader.setContentHandler(handler); reader.parse(new InputSource(bis)); if (log.isDebugEnabled()) { long end = System.currentTimeMillis(); log.debug("Rss parse duration:" + (end - start)); } int pageCount = resultBuilder.getPageCount(); if (pageCount > 1) { String uid = request.getPortalUid(); if (uid == null) uid = request.getRequestHeader("MSDPortal-SessionId"); for (int pageNum = 0; pageNum < pageCount; pageNum++) { RssCacheDAO.newInstance().insertCache(uid, request.getTargetURL(), pageNum, resultBuilder.getResult(pageNum)); } } return resultBuilder.getResult(0).getBytes("UTF-8"); } catch (SAXException e) { log.error("Xml file at URL [ " + request.getTargetURL() + "] is failed to be analysed.[" + e.getLocalizedMessage() + "]", e); resultBuilder.setStatusCode(1); resultBuilder.setMessage("Failed to analyse xml.: " + e.getLocalizedMessage()); return resultBuilder.getResult().getBytes("UTF-8"); } catch (IOException e) { log.error("Xml file at URL [ " + request.getTargetURL() + "] is failed to be analysed.[" + e.getLocalizedMessage() + "]", e); resultBuilder.setStatusCode(1); resultBuilder.setMessage("Failed to analyse xml.: " + e.getLocalizedMessage()); return resultBuilder.getResult().getBytes("UTF-8"); } catch (ParserConfigurationException e) { log.error("Xml file at URL [ " + request.getTargetURL() + "] is failed to be analysed.[" + e.getLocalizedMessage() + "]", e); resultBuilder.setStatusCode(1); resultBuilder.setMessage("Failed to analyse xml.: " + e.getLocalizedMessage()); return resultBuilder.getResult().getBytes("UTF-8"); } finally { bis.close(); } }
From source file:org.jbuiltDemo.managed.view.Xhtml2Jbuilt.java
public Xhtml2Jbuilt() throws Exception { factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true);/*from w ww . j av a2s.co m*/ factory.setFeature("http://xml.org/sax/features/namespace-prefixes", true); factory.setFeature("http://xml.org/sax/features/validation", false); factory.setValidating(false); parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); reader.setDTDHandler(this); reader.setContentHandler(this); reader.setProperty("http://xml.org/sax/properties/lexical-handler", this); reader.setErrorHandler(this); reader.setEntityResolver(this); }
From source file:org.openrdf.rio.rdfxml.RDFXMLParser.java
private void parse(InputSource inputSource) throws IOException, RDFParseException, RDFHandlerException { try {/*w ww . j a v a 2 s .c om*/ documentURI = inputSource.getSystemId(); saxFilter.setParseStandAloneDocuments( getParserConfig().get(XMLParserSettings.PARSE_STANDALONE_DOCUMENTS)); // saxFilter.clear(); saxFilter.setDocumentURI(documentURI); XMLReader xmlReader; if (getParserConfig().isSet(XMLParserSettings.CUSTOM_XML_READER)) { xmlReader = getParserConfig().get(XMLParserSettings.CUSTOM_XML_READER); } else { xmlReader = XMLReaderFactory.createXMLReader(); } xmlReader.setContentHandler(saxFilter); xmlReader.setErrorHandler(this); // Set all compulsory feature settings, using the defaults if they are // not explicitly set for (RioSetting<Boolean> aSetting : getCompulsoryXmlFeatureSettings()) { try { xmlReader.setFeature(aSetting.getKey(), getParserConfig().get(aSetting)); } catch (SAXNotRecognizedException e) { reportWarning(String.format("%s is not a recognized SAX feature.", aSetting.getKey())); } catch (SAXNotSupportedException e) { reportWarning(String.format("%s is not a supported SAX feature.", aSetting.getKey())); } } // Set all compulsory property settings, using the defaults if they are // not explicitly set for (RioSetting<?> aSetting : getCompulsoryXmlPropertySettings()) { try { xmlReader.setProperty(aSetting.getKey(), getParserConfig().get(aSetting)); } catch (SAXNotRecognizedException e) { reportWarning(String.format("%s is not a recognized SAX property.", aSetting.getKey())); } catch (SAXNotSupportedException e) { reportWarning(String.format("%s is not a supported SAX property.", aSetting.getKey())); } } // Check for any optional feature settings that are explicitly set in // the parser config for (RioSetting<Boolean> aSetting : getOptionalXmlFeatureSettings()) { try { if (getParserConfig().isSet(aSetting)) { xmlReader.setFeature(aSetting.getKey(), getParserConfig().get(aSetting)); } } catch (SAXNotRecognizedException e) { reportWarning(String.format("%s is not a recognized SAX feature.", aSetting.getKey())); } catch (SAXNotSupportedException e) { reportWarning(String.format("%s is not a supported SAX feature.", aSetting.getKey())); } } // Check for any optional property settings that are explicitly set in // the parser config for (RioSetting<?> aSetting : getOptionalXmlPropertySettings()) { try { if (getParserConfig().isSet(aSetting)) { xmlReader.setProperty(aSetting.getKey(), getParserConfig().get(aSetting)); } } catch (SAXNotRecognizedException e) { reportWarning(String.format("%s is not a recognized SAX property.", aSetting.getKey())); } catch (SAXNotSupportedException e) { reportWarning(String.format("%s is not a supported SAX property.", aSetting.getKey())); } } xmlReader.parse(inputSource); } catch (SAXParseException e) { Exception wrappedExc = e.getException(); if (wrappedExc == null) { reportFatalError(e, e.getLineNumber(), e.getColumnNumber()); } else { reportFatalError(wrappedExc, e.getLineNumber(), e.getColumnNumber()); } } catch (SAXException e) { Exception wrappedExc = e.getException(); if (wrappedExc == null) { reportFatalError(e); } else if (wrappedExc instanceof RDFParseException) { throw (RDFParseException) wrappedExc; } else if (wrappedExc instanceof RDFHandlerException) { throw (RDFHandlerException) wrappedExc; } else { reportFatalError(wrappedExc); } } finally { // Clean up saxFilter.clear(); xmlLang = null; elementStack.clear(); usedIDs.clear(); clear(); } }