Example usage for javax.xml.transform.stax StAXSource StAXSource

List of usage examples for javax.xml.transform.stax StAXSource StAXSource

Introduction

In this page you can find the example usage for javax.xml.transform.stax StAXSource StAXSource.

Prototype

public StAXSource(final XMLStreamReader xmlStreamReader) 

Source Link

Document

Creates a new instance of a StAXSource by supplying an XMLStreamReader .

XMLStreamReader must be a non-null reference.

XMLStreamReader must be in XMLStreamConstants#START_DOCUMENT or XMLStreamConstants#START_ELEMENT state.

Usage

From source file:Main.java

public static void main(String[] args) throws Exception {
    XMLInputFactory xif = XMLInputFactory.newInstance();
    XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
    xsr.nextTag(); // Advance to statements element

    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer t = tf.newTransformer();
    while (xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
        DOMResult result = new DOMResult();
        t.transform(new StAXSource(xsr), result);
        Node domNode = result.getNode();
    }//  w w  w. j a  va  2s.co m
}

From source file:Main.java

public static void main(String[] args) throws Exception {
    XMLInputFactory xif = XMLInputFactory.newInstance();
    XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
    xsr.nextTag(); // Advance to statements element

    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer t = tf.newTransformer();
    while (xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
        File file = new File("out/" + xsr.getAttributeValue(null, "account") + ".xml");
        t.transform(new StAXSource(xsr), new StreamResult(file));
    }/*from   w  w  w  . j av  a  2 s  . co m*/
}

From source file:Main.java

public static void main(String[] args) throws Exception {
    XMLInputFactory xif = XMLInputFactory.newInstance();
    XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
    xsr.nextTag(); // Advance to statements element

    while (xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer t = tf.newTransformer();
        File file = new File("out" + xsr.getAttributeValue(null, "account") + ".xml");
        t.transform(new StAXSource(xsr), new StreamResult(file));
    }//from w  w w. j av  a 2s .co  m
}

From source file:com.cisco.cta.taxii.adapter.ResponseTransformer.java

/**
 * Transforms TAXII response./*from w w w  . j ava2s.  c  o  m*/
 * 
 * @param resp HTTP response
 * @return TaxiiPollResponse if valid TAXII poll response was returned
 * @throws Exception When any error occurs.
 */
public TaxiiPollResponse transform(ClientHttpResponse resp) throws Exception {
    if (resp.getRawStatusCode() == HTTP_OK) {
        try (InputStream body = resp.getBody()) {
            TaxiiPollResponseReader responseReader = readerFactory.create(body);
            Transformer transformer = templates.newTransformer();
            transformer.transform(new StAXSource(responseReader), new StreamResult(logWriter));
            return responseReader.getResponse();
        }
    } else {
        throw new IOException("HTTP response status " + resp.getRawStatusCode() + ":" + resp.getStatusText());
    }
}

From source file:demo.SourceHttpMessageConverter.java

private Source readStAXSource(InputStream body) {
    try {/*  ww w. ja v  a2 s  . com*/
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, isSupportDtd());
        inputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, isProcessExternalEntities());
        if (!isProcessExternalEntities()) {
            inputFactory.setXMLResolver(NO_OP_XML_RESOLVER);
        }
        XMLStreamReader streamReader = inputFactory.createXMLStreamReader(body);
        return new StAXSource(streamReader);
    } catch (XMLStreamException ex) {
        throw new HttpMessageNotReadableException("Could not parse document: " + ex.getMessage(), ex);
    }
}

From source file:org.activiti.bpmn.converter.BpmnXMLConverter.java

public void validateModel(XMLStreamReader xmlStreamReader) throws Exception {
    Schema schema = createSchema();

    Validator validator = schema.newValidator();
    validator.validate(new StAXSource(xmlStreamReader));
}

From source file:org.apereo.portal.io.xml.IdentityImportExportTestUtilities.java

public static <T> void testIdentityImportExport(TransactionOperations transactionOperations,
        final IDataImporter<T> dataImporter, final IDataExporter<?> dataExporter, Resource resource,
        Function<T, String> getName) throws Exception {

    final String importData = toString(resource);

    final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
    final XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new StringReader(importData));

    //Unmarshall from XML
    final Unmarshaller unmarshaller = dataImporter.getUnmarshaller();
    final StAXSource source = new StAXSource(xmlEventReader);
    @SuppressWarnings("unchecked")
    final T dataImport = (T) unmarshaller.unmarshal(source);

    //Make sure the data was unmarshalled
    assertNotNull("Unmarshalled import data was null", dataImport);

    //Import the data
    dataImporter.importData(dataImport);

    //Export the data
    final String name = getName.apply(dataImport);
    final Object dataExport = transactionOperations.execute(new TransactionCallback<Object>() {
        /* (non-Javadoc)
         * @see org.springframework.transaction.support.TransactionCallback#doInTransaction(org.springframework.transaction.TransactionStatus)
         *///from w  w w. j  a v a  2 s .c  om
        @Override
        public Object doInTransaction(TransactionStatus status) {
            return dataExporter.exportData(name);
        }
    });

    //Make sure the data was exported
    assertNotNull("Exported data was null", dataExport);

    //Marshall to XML
    final Marshaller marshaller = dataExporter.getMarshaller();

    final StringWriter result = new StringWriter();
    marshaller.marshal(dataExport, new StreamResult(result));

    //Compare the exported XML data with the imported XML data, they should match
    final String resultString = result.toString();
    try {
        XMLUnit.setIgnoreWhitespace(true);
        Diff d = new Diff(new StringReader(importData), new StringReader(resultString));
        assertTrue("Export result differs from import" + d, d.similar());
    } catch (Exception e) {
        throw new XmlTestException("Failed to assert similar between import XML and export XML", resultString,
                e);
    } catch (Error e) {
        throw new XmlTestException("Failed to assert similar between import XML and export XML", resultString,
                e);
    }
}

From source file:org.apereo.portal.io.xml.JaxbPortalDataHandlerService.java

protected Object unmarshallData(final XMLEventReader bufferedXmlEventReader,
        final IDataImporter<Object> dataImporterExporter) {
    final Unmarshaller unmarshaller = dataImporterExporter.getUnmarshaller();

    try {//ww  w.  j a  v a2s .c  o  m
        final StAXSource source = new StAXSource(bufferedXmlEventReader);
        return unmarshaller.unmarshal(source);
    } catch (XmlMappingException e) {
        throw new RuntimeException("Failed to map provided XML to portal data", e);
    } catch (IOException e) {
        throw new RuntimeException("Failed to read the provided XML data", e);
    } catch (XMLStreamException e) {
        throw new RuntimeException("Failed to create StAX Source to read XML data", e);
    }
}

From source file:org.apereo.portal.portlets.sitemap.SitemapPortletController.java

/**
 * Display the user sitemap.//from w  w w . ja v a  2 s .c  o m
 * 
 * @param request
 * @return "sitemapView" and a supporting model
 * @throws XMLStreamException
 * @throws IllegalStateException if components required for the SiteMap portlet fail to auto-wire
 */
@RequestMapping
public ModelAndView displaySitemap(PortletRequest request) throws XMLStreamException {

    Map<String, Object> model = new HashMap<String, Object>();

    if (this.xsltPortalUrlProvider == null) {
        throw new IllegalStateException(
                "Sitemap portlet requires a XsltPortalUrlProvider but it failed to " + "auto-wire");
    }

    if (this.attributeIncorporationComponent == null) {
        throw new IllegalStateException(
                "Sitemap portlet requires a StAXPipelineComponent with qualifier structureAttributeIncorporationComponent but it failed to auto-wire");
    }

    if (this.portalRequestUtils == null) {
        throw new IllegalStateException(
                "Sitemap portlet requires an IPortalRequestUtils but it failed to " + "auto-wire");
    }

    // retrieve the user layout with structure attributes applied (required in order to display tab groups)
    final HttpServletRequest httpServletRequest = this.portalRequestUtils.getPortletHttpRequest(request);
    final HttpServletResponse httpServletResponse = this.portalRequestUtils.getOriginalPortalResponse(request);
    final PipelineEventReader<XMLEventReader, XMLEvent> reader = attributeIncorporationComponent
            .getEventReader(httpServletRequest, httpServletResponse);

    // create a Source from the user's layout document
    StAXSource source = new StAXSource(reader.getEventReader());
    model.put("source", source);
    model.put(XsltPortalUrlProvider.CURRENT_REQUEST, httpServletRequest);
    model.put(XsltPortalUrlProvider.XSLT_PORTAL_URL_PROVIDER, this.xsltPortalUrlProvider);
    model.put(USE_TAB_GROUPS, useTabGroups);
    model.put(USER_LANG, ObjectUtils.toString(request.getLocale()));

    return new ModelAndView("sitemapView", model);
}

From source file:org.apereo.portal.rendering.xslt.XSLTComponent.java

@Override
public PipelineEventReader<XMLEventReader, XMLEvent> getEventReader(HttpServletRequest request,
        HttpServletResponse response) {//from w  ww .  j  a v  a  2s. c  o m
    final PipelineEventReader<XMLEventReader, XMLEvent> pipelineEventReader = this.wrappedComponent
            .getEventReader(request, response);

    final Transformer transformer = this.transformerSource.getTransformer(request, response);

    //Setup a URIResolver based on the current resource loader
    transformer.setURIResolver(this.uriResolver);

    //Configure the Transformer via injected class
    if (this.xsltParameterSource != null) {
        final Map<String, Object> transformerParameters = this.xsltParameterSource.getParameters(request,
                response);
        if (transformerParameters != null) {
            this.logger.debug("{} - Setting Transformer Parameters: ", this.beanName, transformerParameters);
            for (final Map.Entry<String, Object> transformerParametersEntry : transformerParameters
                    .entrySet()) {
                final String name = transformerParametersEntry.getKey();
                final Object value = transformerParametersEntry.getValue();
                if (value != null) {
                    transformer.setParameter(name, value);
                }
            }
        }

        final Properties outputProperties = this.xsltParameterSource.getOutputProperties(request, response);
        if (outputProperties != null) {
            this.logger.debug("{} - Setting Transformer Output Properties: ", this.beanName, outputProperties);
            transformer.setOutputProperties(outputProperties);
        }
    }

    //The event reader from the previous component in the pipeline
    final XMLEventReader eventReader = pipelineEventReader.getEventReader();

    //Wrap the event reader in a stream reader to avoid a JDK bug
    final XMLStreamReader streamReader;
    try {
        streamReader = new FixedXMLEventStreamReader(eventReader);
    } catch (XMLStreamException e) {
        throw new RuntimeException("Failed to create XMLStreamReader from XMLEventReader", e);
    }
    final Source xmlReaderSource = new StAXSource(streamReader);

    //Setup logging for the transform
    transformer.setErrorListener(this.errorListener);

    //Transform to a SAX ContentHandler to avoid JDK bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6775588
    final XMLEventBufferWriter eventWriterBuffer = new XMLEventBufferWriter();
    final ContentHandler contentHandler = StaxUtils.createLexicalContentHandler(eventWriterBuffer);
    contentHandler.setDocumentLocator(new LocatorImpl());

    final SAXResult outputTarget = new SAXResult(contentHandler);
    try {
        this.logger.debug("{} - Begining XML Transformation", this.beanName);
        transformer.transform(xmlReaderSource, outputTarget);
        this.logger.debug("{} - XML Transformation complete", this.beanName);
    } catch (TransformerException e) {
        throw new RuntimeException("Failed to transform document", e);
    }

    final String mediaType = transformer.getOutputProperty(OutputKeys.MEDIA_TYPE);

    final List<XMLEvent> eventBuffer = eventWriterBuffer.getEventBuffer();
    final XMLEventReader outputEventReader = new XMLEventBufferReader(eventBuffer.listIterator());

    final Map<String, String> outputProperties = pipelineEventReader.getOutputProperties();
    final PipelineEventReaderImpl<XMLEventReader, XMLEvent> pipelineEventReaderImpl = new PipelineEventReaderImpl<XMLEventReader, XMLEvent>(
            outputEventReader, outputProperties);
    pipelineEventReaderImpl.setOutputProperty(OutputKeys.MEDIA_TYPE, mediaType);
    return pipelineEventReaderImpl;
}