Search in sources :

Example 26 with XMLReader

use of org.xml.sax.XMLReader in project spring-framework by spring-projects.

the class Jaxb2Marshaller method loadSchema.

// on JDK 9
@SuppressWarnings("deprecation")
private Schema loadSchema(Resource[] resources, String schemaLanguage) throws IOException, SAXException {
    if (logger.isDebugEnabled()) {
        logger.debug("Setting validation schema to " + StringUtils.arrayToCommaDelimitedString(this.schemaResources));
    }
    Assert.notEmpty(resources, "No resources given");
    Assert.hasLength(schemaLanguage, "No schema language provided");
    Source[] schemaSources = new Source[resources.length];
    XMLReader xmlReader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
    xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
    for (int i = 0; i < resources.length; i++) {
        Assert.notNull(resources[i], "Resource is null");
        Assert.isTrue(resources[i].exists(), "Resource " + resources[i] + " does not exist");
        InputSource inputSource = SaxResourceUtils.createInputSource(resources[i]);
        schemaSources[i] = new SAXSource(xmlReader, inputSource);
    }
    SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
    if (this.schemaResourceResolver != null) {
        schemaFactory.setResourceResolver(this.schemaResourceResolver);
    }
    return schemaFactory.newSchema(schemaSources);
}
Also used : SchemaFactory(javax.xml.validation.SchemaFactory) InputSource(org.xml.sax.InputSource) SAXSource(javax.xml.transform.sax.SAXSource) DOMSource(javax.xml.transform.dom.DOMSource) StreamSource(javax.xml.transform.stream.StreamSource) Source(javax.xml.transform.Source) InputSource(org.xml.sax.InputSource) SAXSource(javax.xml.transform.sax.SAXSource) StAXSource(javax.xml.transform.stax.StAXSource) DataSource(javax.activation.DataSource) XMLReader(org.xml.sax.XMLReader)

Example 27 with XMLReader

use of org.xml.sax.XMLReader in project spring-framework by spring-projects.

the class AbstractMarshaller method createXmlReader.

/**
	 * Create an {@code XMLReader} that this marshaller will when passed an empty {@code SAXSource}.
	 * @return the XMLReader
	 * @throws SAXException if thrown by JAXP methods
	 */
// on JDK 9
@SuppressWarnings("deprecation")
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;
}
Also used : XMLReader(org.xml.sax.XMLReader)

Example 28 with XMLReader

use of org.xml.sax.XMLReader in project spring-framework by spring-projects.

the class CastorUnmarshallerTests method unmarshalSaxSourceWithXmlOptions.

@Test
public void unmarshalSaxSourceWithXmlOptions() throws Exception {
    final AtomicReference<XMLReader> result = new AtomicReference<>();
    CastorMarshaller marshaller = new CastorMarshaller() {

        @Override
        protected Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource) {
            result.set(xmlReader);
            return null;
        }
    };
    // 1. external-general-entities and dtd support disabled (default)
    marshaller.unmarshal(new SAXSource(new InputSource("1")));
    assertNotNull(result.get());
    assertEquals(true, result.get().getFeature("http://apache.org/xml/features/disallow-doctype-decl"));
    assertEquals(false, result.get().getFeature("http://xml.org/sax/features/external-general-entities"));
    // 2. external-general-entities and dtd support enabled
    result.set(null);
    marshaller.setSupportDtd(true);
    marshaller.setProcessExternalEntities(true);
    marshaller.unmarshal(new SAXSource(new InputSource("1")));
    assertNotNull(result.get());
    assertEquals(false, result.get().getFeature("http://apache.org/xml/features/disallow-doctype-decl"));
    assertEquals(true, result.get().getFeature("http://xml.org/sax/features/external-general-entities"));
}
Also used : InputSource(org.xml.sax.InputSource) SAXSource(javax.xml.transform.sax.SAXSource) AtomicReference(java.util.concurrent.atomic.AtomicReference) XMLReader(org.xml.sax.XMLReader) Test(org.junit.Test)

Example 29 with XMLReader

use of org.xml.sax.XMLReader in project spring-framework by spring-projects.

the class CastorUnmarshallerTests method unmarshalStreamSourceWithXmlOptions.

@Test
public void unmarshalStreamSourceWithXmlOptions() throws Exception {
    final AtomicReference<XMLReader> result = new AtomicReference<>();
    CastorMarshaller marshaller = new CastorMarshaller() {

        @Override
        protected Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource) {
            result.set(xmlReader);
            return null;
        }
    };
    // 1. external-general-entities and dtd support disabled (default)
    marshaller.unmarshal(new StreamSource("1"));
    assertNotNull(result.get());
    assertEquals(true, result.get().getFeature("http://apache.org/xml/features/disallow-doctype-decl"));
    assertEquals(false, result.get().getFeature("http://xml.org/sax/features/external-general-entities"));
    // 2. external-general-entities and dtd support enabled
    result.set(null);
    marshaller.setSupportDtd(true);
    marshaller.setProcessExternalEntities(true);
    marshaller.unmarshal(new StreamSource("1"));
    assertNotNull(result.get());
    assertEquals(false, result.get().getFeature("http://apache.org/xml/features/disallow-doctype-decl"));
    assertEquals(true, result.get().getFeature("http://xml.org/sax/features/external-general-entities"));
}
Also used : InputSource(org.xml.sax.InputSource) StreamSource(javax.xml.transform.stream.StreamSource) AtomicReference(java.util.concurrent.atomic.AtomicReference) XMLReader(org.xml.sax.XMLReader) Test(org.junit.Test)

Example 30 with XMLReader

use of org.xml.sax.XMLReader in project spring-framework by spring-projects.

the class SourceHttpMessageConverter method readSAXSource.

// on JDK 9
@SuppressWarnings("deprecation")
private SAXSource readSAXSource(InputStream body) throws IOException {
    try {
        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);
        }
        byte[] bytes = StreamUtils.copyToByteArray(body);
        return new SAXSource(xmlReader, new InputSource(new ByteArrayInputStream(bytes)));
    } catch (SAXException ex) {
        throw new HttpMessageNotReadableException("Could not parse document: " + ex.getMessage(), ex);
    }
}
Also used : InputSource(org.xml.sax.InputSource) SAXSource(javax.xml.transform.sax.SAXSource) HttpMessageNotReadableException(org.springframework.http.converter.HttpMessageNotReadableException) ByteArrayInputStream(java.io.ByteArrayInputStream) XMLReader(org.xml.sax.XMLReader) SAXException(org.xml.sax.SAXException)

Aggregations

XMLReader (org.xml.sax.XMLReader)196 InputSource (org.xml.sax.InputSource)160 SAXException (org.xml.sax.SAXException)66 IOException (java.io.IOException)65 SAXSource (javax.xml.transform.sax.SAXSource)38 SAXParserFactory (javax.xml.parsers.SAXParserFactory)37 SAXParser (javax.xml.parsers.SAXParser)36 StringReader (java.io.StringReader)35 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)28 ExpatReader (org.apache.harmony.xml.ExpatReader)24 InputStream (java.io.InputStream)20 ContentHandler (org.xml.sax.ContentHandler)20 TransformerException (javax.xml.transform.TransformerException)17 DOMSource (javax.xml.transform.dom.DOMSource)15 StreamSource (javax.xml.transform.stream.StreamSource)14 ByteArrayInputStream (java.io.ByteArrayInputStream)13 InputStreamReader (java.io.InputStreamReader)9 Source (javax.xml.transform.Source)9 Transformer (javax.xml.transform.Transformer)9 TransformerConfigurationException (javax.xml.transform.TransformerConfigurationException)9