Example usage for org.xml.sax.helpers XMLReaderFactory createXMLReader

List of usage examples for org.xml.sax.helpers XMLReaderFactory createXMLReader

Introduction

In this page you can find the example usage for org.xml.sax.helpers XMLReaderFactory createXMLReader.

Prototype

public static XMLReader createXMLReader() throws SAXException 

Source Link

Document

Obtains a new instance of a org.xml.sax.XMLReader .

Usage

From source file:net.sf.joost.stx.Processor.java

/**
 * Create an <code>XMLReader</code> object (a SAX Parser)
 * @throws SAXException if a SAX Parser couldn't be created
 *///from   w  w w.j  a  va2 s  .  c  om
public static XMLReader createXMLReader() throws SAXException {
    // Using pure SAX2, not JAXP
    XMLReader reader = null;
    try {
        // try default parser implementation
        reader = XMLReaderFactory.createXMLReader();
    } catch (SAXException e) {
        String prop = System.getProperty("org.xml.sax.driver");
        if (prop != null) {
            // property set, but still failed
            throw new SAXException("Can't create XMLReader for class " + prop);
            // leave the method here
        }
        // try another SAX implementation
        String PARSER_IMPLS[] = { "org.apache.xerces.parsers.SAXParser", // Xerces
                "org.apache.crimson.parser.XMLReaderImpl", // Crimson
                "gnu.xml.aelfred2.SAXDriver" // Aelfred nonvalidating
        };
        for (int i = 0; i < PARSER_IMPLS.length; i++) {
            try {
                reader = XMLReaderFactory.createXMLReader(PARSER_IMPLS[i]);
                break; // for (...)
            } catch (SAXException e1) {
            } // continuing
        }
        if (reader == null) {
            throw new SAXException("Can't find SAX parser implementation.\n"
                    + "Please specify a parser class via the system property " + "'org.xml.sax.driver'");
        }
    }

    // set features and properties that have been put
    // into the system properties (e.g. via command line)
    Properties sysProps = System.getProperties();
    for (Enumeration e = sysProps.propertyNames(); e.hasMoreElements();) {
        String propKey = (String) e.nextElement();
        if (propKey.startsWith(EXTERN_SAX_FEATURE_PREFIX)) {
            reader.setFeature(propKey.substring(EXTERN_SAX_FEATURE_PREFIX.length()),
                    Boolean.parseBoolean(sysProps.getProperty(propKey)));
            continue;
        }
        if (propKey.startsWith(EXTERN_SAX_PROPERTY_PREFIX)) {
            reader.setProperty(propKey.substring(EXTERN_SAX_PROPERTY_PREFIX.length()),
                    sysProps.getProperty(propKey));
            continue;
        }
    }

    if (DEBUG)
        log.debug("Using " + reader.getClass().getName());
    return reader;
}

From source file:com.amalto.core.query.DataRecordCreationTest.java

public void testCreationFromSAXWithInheritance() throws Exception {
    MetadataRepository repository = new MetadataRepository();
    repository.load(this.getClass().getResourceAsStream("metadata.xsd"));
    ComplexTypeMetadata c = repository.getComplexType("C");
    assertNotNull(c);//www  .j av a 2  s.com
    XMLReader xmlReader = XMLReaderFactory.createXMLReader();
    DataRecordReader<XmlSAXDataRecordReader.Input> dataRecordReader = new XmlSAXDataRecordReader();
    XmlSAXDataRecordReader.Input input = new XmlSAXDataRecordReader.Input(xmlReader,
            new InputSource(this.getClass().getResourceAsStream("DataRecordCreationTest_2.xml")));
    DataRecord dataRecord = dataRecordReader.read(repository, c, input);
    performInheritanceAsserts(dataRecord);
}

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  ww . ja  va  2s . com*/
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:com.amalto.core.query.DataRecordCreationTest.java

private List<DataRecord> getDataRecords(String resourceName, ComplexTypeMetadata recordType) throws Exception {
    List<DataRecord> records = new LinkedList<DataRecord>();
    // Read using SAX
    XMLReader xmlReader = XMLReaderFactory.createXMLReader();
    DataRecordReader<XmlSAXDataRecordReader.Input> dataRecordReader = new XmlSAXDataRecordReader();
    XmlSAXDataRecordReader.Input input = new XmlSAXDataRecordReader.Input(xmlReader,
            new InputSource(this.getClass().getResourceAsStream(resourceName)));
    DataRecord dataRecord = dataRecordReader.read(repository, recordType, input);
    records.add(dataRecord);//from  w  w  w . j av  a2  s. c om
    // Read using DOM
    DataRecordReader<Element> documentDataRecordReader = new XmlDOMDataRecordReader();
    Document document = Util.parse(IOUtils.toString(this.getClass().getResourceAsStream(resourceName)));
    records.add(documentDataRecordReader.read(repository, company, document.getDocumentElement()));
    // Read using String
    DataRecordReader<String> stringDataRecordReader = new XmlStringDataRecordReader();
    DataRecord record = stringDataRecordReader.read(repository, company,
            IOUtils.toString(this.getClass().getResourceAsStream(resourceName)));
    records.add(record);
    return records;
}

From source file:de.zib.scalaris.examples.wikipedia.data.xml.Main.java

/**
 * @param handler/* w ww.j  av  a  2s  .co m*/
 * @param file
 * @throws SAXException
 * @throws IOException
 */
private static void runXmlHandler(WikiDumpHandler handler, InputSource[] files)
        throws SAXException, IOException {
    XMLReader reader = XMLReaderFactory.createXMLReader();
    handler.setUp();
    ReportAtShutDown shutdownHook = handler.new ReportAtShutDown();
    Runtime.getRuntime().addShutdownHook(shutdownHook);
    reader.setContentHandler(handler);
    for (InputSource file : files) {
        reader.parse(file);
    }
    handler.tearDown();
    shutdownHook.reportAtEnd();
    Runtime.getRuntime().removeShutdownHook(shutdownHook);
    exitCheckHandler(handler);
}

From source file:com.amazonaws.eclipse.dynamodb.testtool.TestToolManager.java

/**
 * Parse a manifest file describing a list of test tool versions.
 *
 * @param file The file to parse.//from ww  w . j  av  a2  s  .co m
 * @return The parsed list of versions.
 * @throws IOException on error.
 */
private List<TestToolVersion> parseManifest(final File file) throws IOException {

    FileInputStream stream = null;
    try {

        stream = new FileInputStream(file);
        BufferedReader buffer = new BufferedReader(new InputStreamReader(stream));

        ManifestContentHandler handler = new ManifestContentHandler();

        XMLReader reader = XMLReaderFactory.createXMLReader();
        reader.setContentHandler(handler);
        reader.setErrorHandler(handler);
        reader.parse(new InputSource(buffer));

        return handler.getResult();

    } catch (SAXException exception) {
        throw new IOException("Error parsing DynamoDB Local manifest file", exception);
    } finally {
        if (stream != null) {
            stream.close();
        }
    }
}

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.//from   ww w  .j  av a  2 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:net.vivekiyer.GAL.ActiveSyncManager.java

/**
 * @param xml The XML to parse /*from   w w  w  .  j a  va 2s .  c  o m*/
 * @param nodeName The Node to search for in the XML 
 * @return List of strings found in the specified node
 * @throws Exception
 * 
 * This method parses the an XML string and returns all values that were found
 * in the node specified in the request 
 */
private String[] parseXML(String xml, String nodeName) throws Exception {
    // Our parser does not handle ampersands too well. Replace with &amp;
    xml = xml.replaceAll("&", "&amp;");

    // Parse the XML
    ByteArrayInputStream xmlParseInputStream = new ByteArrayInputStream(xml.toString().getBytes());
    XMLReader xr = XMLReaderFactory.createXMLReader();
    XMLParser parser = new XMLParser(nodeName);
    xr.setContentHandler(parser);
    xr.parse(new InputSource(xmlParseInputStream));
    return parser.getOutput();
}

From source file:ch.kostceco.tools.kostval.validation.modulesiard.impl.ValidationHcontentModuleImpl.java

private Range getRange(File xsdFile) throws SAXException, IOException {
    Range range = new Range();
    RangeHandler rangeHandler = new RangeHandler();
    try {/*from   w w w.  j av  a2 s . c o m*/
        reader = XMLReaderFactory.createXMLReader();
        reader.setFeature("http://xml.org/sax/features/validation", false);
        reader.setFeature("http://apache.org/xml/features/validation/schema", false);
        reader.setContentHandler(rangeHandler);
        reader.parse(new InputSource(new FileInputStream(xsdFile)));
    } catch (BreakException e) {
        range = rangeHandler.getRange();
    }
    return range;
}

From source file:com.amalto.core.query.SystemStorageTest.java

public void testSAXParsing() throws Exception {
    Collection<String> files = getConfigFiles();
    ClassRepository repository = buildRepository();

    DataRecordReader<XmlSAXDataRecordReader.Input> dataRecordReader = new XmlSAXDataRecordReader();
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);/*from www .j a v  a 2s.co  m*/
    DocumentBuilder documentBuilder = factory.newDocumentBuilder();
    XMLReader reader = XMLReaderFactory.createXMLReader();
    int error = 0;
    for (String fis1 : files) {
        try {
            String typeName;
            Document document;
            document = documentBuilder.parse(new ByteArrayInputStream(fis1.getBytes()));
            typeName = document.getDocumentElement().getNodeName();
            ComplexTypeMetadata complexType = repository.getComplexType(typeName);
            if (complexType == null) {
                continue;
            }
            dataRecordReader.read(repository, complexType, new XmlSAXDataRecordReader.Input(reader,
                    new InputSource(new ByteArrayInputStream(fis1.getBytes()))));
        } catch (Exception e) {
            error++;
        }
    }
    assertEquals(0, error);
}