Example usage for javax.xml.transform.dom DOMResult getNode

List of usage examples for javax.xml.transform.dom DOMResult getNode

Introduction

In this page you can find the example usage for javax.xml.transform.dom DOMResult getNode.

Prototype

public Node getNode() 

Source Link

Document

Get the node that will contain the result DOM tree.

Usage

From source file:de.betterform.xml.xforms.model.submission.Submission.java

private void submitReplaceEmbedXForms(Map response) throws XFormsException {
    // check for targetid
    String targetid = getXFormsAttribute(TARGETID_ATTRIBUTE);
    String resource = getResource();
    Map eventInfo = new HashMap();
    String error = null;//from   w ww  .  jav a2 s.  com
    if (targetid == null) {
        error = "targetId";
    } else if (resource == null) {
        error = "resource";
    }

    if (error != null && error.length() > 0) {
        eventInfo.put(XFormsConstants.ERROR_TYPE, "no " + error + "defined for submission resource");
        this.container.dispatch(this.target, XFormsEventNames.SUBMIT_ERROR, eventInfo);
        return;
    }

    Document result = getResponseAsDocument(response);
    Node embedElement = result.getDocumentElement();

    if (resource.indexOf("#") != -1) {
        // detected a fragment so extract that from our result Document

        String fragmentid = resource.substring(resource.indexOf("#") + 1);
        if (fragmentid.indexOf("?") != -1) {
            fragmentid = fragmentid.substring(0, fragmentid.indexOf("?"));
        }
        embedElement = DOMUtil.getById(result, fragmentid);
    }

    Element embeddedNode = null;
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("get target element for id: " + targetid);
    }
    Element targetElem = this.container.getElementById(targetid);
    DOMResult domResult = new DOMResult();
    //Test if targetElem exist.
    if (targetElem != null) {
        // destroy existing embedded form within targetNode
        if (targetElem.hasChildNodes()) {
            // destroyembeddedModels(targetElem);
            Initializer.disposeUIElements(targetElem);
        }
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("destroyed any existing ui elements for target elem");
        }

        // import referenced embedded form into host document
        embeddedNode = (Element) this.container.getDocument().importNode(embedElement, true);

        //import namespaces
        NamespaceResolver.applyNamespaces(targetElem.getOwnerDocument().getDocumentElement(),
                (Element) embeddedNode);

        // keep original targetElem id within hostdoc
        embeddedNode.setAttributeNS(null, "id", targetElem.getAttributeNS(null, "id"));
        //copy all Attributes that might have been on original mountPoint to embedded node
        DOMUtil.copyAttributes(targetElem, embeddedNode, null);
        targetElem.getParentNode().replaceChild(embeddedNode, targetElem);
        //create model for it
        Initializer.initializeUIElements(model, embeddedNode, null, null);

        try {
            CachingTransformerService transformerService = new CachingTransformerService(
                    new ClasspathResourceResolver("unused"));
            // TODO: MUST BE GENERIFIED USING USERAGENT MECHANISM
            //TODO: check exploded mode!!!
            String path = getClass().getResource("/META-INF/resources/xslt/xhtml.xsl").getPath();

            //String xslFilePath = "file:" + path;
            transformerService.getTransformer(new URI(path));
            XSLTGenerator generator = new XSLTGenerator();
            generator.setTransformerService(transformerService);
            generator.setStylesheetURI(new URI(path));
            generator.setInput(embeddedNode);
            generator.setOutput(domResult);
            generator.generate();
        } catch (TransformerException e) {
            throw new XFormsException(
                    "Transformation error while executing 'Submission.submitReplaceEmbedXForms'", e);
        } catch (URISyntaxException e) {
            throw new XFormsException(
                    "Malformed URI throwed URISyntaxException in 'Submission.submitReplaceEmbedXForms'", e);
        }
    }

    // Map eventInfo = constructEventInfo(response);
    OutputStream outputStream = new ByteArrayOutputStream();
    try {
        DOMUtil.prettyPrintDOM(domResult.getNode(), outputStream);
    } catch (TransformerException e) {
        throw new XFormsException(e);
    }

    eventInfo.put(EMBEDNODE, outputStream.toString());
    eventInfo.put("embedTarget", targetid);
    eventInfo.put("embedXForms", true);

    // dispatch xforms-submit-done
    this.container.dispatch(this.target, XFormsEventNames.SUBMIT_DONE, eventInfo);

}

From source file:nl.nn.adapterframework.parameters.Parameter.java

private Object transform(Source xmlSource, ParameterResolutionContext prc)
        throws ParameterException, TransformerException, IOException {
    TransformerPool pool = getTransformerPool();
    if (TYPE_NODE.equals(getType()) || TYPE_DOMDOC.equals(getType())) {

        DOMResult transformResult = new DOMResult();
        pool.transform(xmlSource, transformResult, prc.getValueMap(paramList));
        Node result = transformResult.getNode();
        if (result != null && TYPE_NODE.equals(getType())) {
            result = result.getFirstChild();
        }/*from  w w w  . ja v  a  2s  .com*/
        if (log.isDebugEnabled()) {
            if (result != null)
                log.debug("Returning Node result [" + result.getClass().getName() + "][" + result + "]: "
                        + ToStringBuilder.reflectionToString(result));
        }
        return result;

    } else {
        return pool.transform(xmlSource, prc.getValueMap(paramList));
    }
}

From source file:org.apache.bsf.engines.xslt.XSLTEngine.java

/**
 * Evaluate an expression. In this case, an expression is assumed
 * to be a stylesheet of the template style (see the XSLT spec).
 *//*from   www .  j a  v a  2s  .  c  o m*/
public Object eval(String source, int lineNo, int columnNo, Object oscript) throws BSFException {
    // get the style base URI (the place from where Xerces XSLT will
    // look for imported/included files and referenced docs): if a
    // bean named "xslt:styleBaseURI" is registered, then cvt it
    // to a string and use that. Otherwise use ".", which means the
    // base is the directory where the process is running from
    Object sbObj = mgr.lookupBean("xslt:styleBaseURI");
    String styleBaseURI = (sbObj == null) ? "." : sbObj.toString();

    // Locate the stylesheet.
    StreamSource styleSource;

    styleSource = new StreamSource(new StringReader(oscript.toString()));
    styleSource.setSystemId(styleBaseURI);

    try {
        transformer = tFactory.newTransformer(styleSource);
    } catch (Exception e) {
        logger.error("Exception from Xerces XSLT:", e);
        throw new BSFException(BSFException.REASON_EXECUTION_ERROR, "Exception from Xerces XSLT: " + e, e);
    }

    // get the src to work on: if a bean named "xslt:src" is registered
    // and its a Node, then use it as the source. If its not a Node, then
    // if its a URL parse it, if not treat it as a file and make a URL and
    // parse it and go. If no xslt:src is found, use an empty document
    // (stylesheet is treated as a literal result element stylesheet)
    Object srcObj = mgr.lookupBean("xslt:src");
    Object xis = null;
    if (srcObj != null) {
        if (srcObj instanceof Node) {
            xis = new DOMSource((Node) srcObj);
        } else {
            try {
                String mesg = "as anything";
                if (srcObj instanceof Reader) {
                    xis = new StreamSource((Reader) srcObj);
                    mesg = "as a Reader";
                } else if (srcObj instanceof File) {
                    xis = new StreamSource((File) srcObj);
                    mesg = "as a file";
                } else {
                    String srcObjstr = srcObj.toString();
                    xis = new StreamSource(new StringReader(srcObjstr));
                    if (srcObj instanceof URL) {
                        mesg = "as a URL";
                    } else {
                        ((StreamSource) xis).setPublicId(srcObjstr);
                        mesg = "as an XML string";
                    }
                }

                if (xis == null) {
                    throw new Exception("Unable to get input from '" + srcObj + "' " + mesg);
                }
            } catch (Exception e) {
                throw new BSFException(BSFException.REASON_EXECUTION_ERROR,
                        "BSF:XSLTEngine: unable to get " + "input from '" + srcObj + "' as XML", e);
            }
        }
    } else {
        // create an empty document - real src must come into the 
        // stylesheet using "doc(...)" [see XSLT spec] or the stylesheet
        // must be of literal result element type
        xis = new StreamSource();
    }

    // set all declared beans as parameters.
    for (int i = 0; i < declaredBeans.size(); i++) {
        BSFDeclaredBean b = (BSFDeclaredBean) declaredBeans.elementAt(i);
        transformer.setParameter(b.name, new XObject(b.bean));
    }

    // declare a "bsf" parameter which is the BSF handle so that 
    // the script can do BSF stuff if it wants to
    transformer.setParameter("bsf", new XObject(new BSFFunctions(mgr, this)));

    // do it
    try {
        DOMResult result = new DOMResult();
        transformer.transform((StreamSource) xis, result);
        return new XSLTResultNode(result.getNode());
    } catch (Exception e) {
        throw new BSFException(BSFException.REASON_EXECUTION_ERROR, "exception while eval'ing XSLT script" + e,
                e);
    }
}

From source file:org.apache.camel.component.xquery.XQueryBuilder.java

public Node evaluateAsDOM(Exchange exchange) throws Exception {
    initialize(exchange);//from   w  w  w. j  a  v a2  s  .c om

    DOMResult result = new DOMResult();
    DynamicQueryContext context = createDynamicContext(exchange);
    XQueryExpression expression = getExpression();
    expression.pull(context, result, properties);
    return result.getNode();
}

From source file:org.apache.camel.dataformat.tagsoup.TidyMarkupDataFormat.java

/**
 * Return the HTML Markup as an {@link org.w3c.dom.Node}
 * //from   w w  w . ja  v a2  s .com
 * @param inputStream
 *            The input Stream to convert
 * @return org.w3c.dom.Node The HTML Markup as a DOM Node
 * @throws CamelException
 */
public Node asNodeTidyMarkup(InputStream inputStream) throws CamelException {
    XMLReader parser = createTagSoupParser();
    StringWriter w = new StringWriter();
    parser.setContentHandler(createContentHandler(w));

    try {
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        DOMResult result = new DOMResult();
        transformer.transform(new SAXSource(parser, new InputSource(inputStream)), result);
        return result.getNode();
    } catch (Exception e) {
        throw new CamelException("Failed to convert the HTML to tidy Markup", e);
    }
}

From source file:org.apache.falcon.converter.OozieProcessMapper.java

protected void marshalHiveAction(ACTION wfAction,
        JAXBElement<org.apache.falcon.oozie.hive.ACTION> actionjaxbElement) {
    try {//from  w  ww. java  2 s . com
        DOMResult hiveActionDOM = new DOMResult();
        Marshaller marshaller = HIVE_ACTION_JAXB_CONTEXT.createMarshaller();
        marshaller.marshal(actionjaxbElement, hiveActionDOM);
        wfAction.setAny(((Document) hiveActionDOM.getNode()).getDocumentElement());
    } catch (JAXBException e) {
        throw new RuntimeException("Unable to marshall hive action.", e);
    }
}

From source file:org.apache.fop.accessibility.AccessibilityPreprocessor.java

/** {@inheritDoc} */
public void endDocument() throws SAXException {
    super.endDocument();
    // do the second transform to struct
    try {//w w  w .java  2s .  c o  m
        //TODO this must be optimized, no buffering (ex. SAX-based tee-proxy)
        byte[] enrichedFO = enrichedFOBuffer.toByteArray();
        Source src = new StreamSource(new ByteArrayInputStream(enrichedFO));
        DOMResult res = new DOMResult();
        reduceFOTree.transform(src, res);
        StructureTree structureTree = new StructureTree();
        NodeList pageSequences = res.getNode().getFirstChild().getChildNodes();
        for (int i = 0; i < pageSequences.getLength(); i++) {
            structureTree.addPageSequenceStructure(pageSequences.item(i).getChildNodes());
        }
        userAgent.setStructureTree(structureTree);

        SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
        saxParserFactory.setNamespaceAware(true);
        saxParserFactory.setValidating(false);
        SAXParser saxParser = saxParserFactory.newSAXParser();
        InputStream in = new ByteArrayInputStream(enrichedFO);
        saxParser.parse(in, fopHandler);
    } catch (Exception e) {
        throw new SAXException(e);
    }
}

From source file:org.apache.fop.intermediate.AreaTreeParserTestCase.java

/** {@inheritDoc} */
protected Document buildIntermediateDocument(Templates templates) throws Exception {
    Transformer transformer = templates.newTransformer();
    setErrorListener(transformer);//from  ww w.j  a  v  a 2s  . c o  m

    //Set up XMLRenderer to render to a DOM
    TransformerHandler handler = testAssistant.getTransformerFactory().newTransformerHandler();
    DOMResult domResult = new DOMResult();
    handler.setResult(domResult);

    FOUserAgent userAgent = createUserAgent();

    //Create an instance of the target renderer so the XMLRenderer can use its font setup
    Renderer targetRenderer = userAgent.getRendererFactory().createRenderer(userAgent, getTargetMIME());

    XMLRenderer renderer = new XMLRenderer(userAgent);
    renderer.mimicRenderer(targetRenderer);
    renderer.setContentHandler(handler);

    userAgent.setRendererOverride(renderer);

    Fop fop = fopFactory.newFop(MimeConstants.MIME_FOP_AREA_TREE, userAgent);
    Result res = new SAXResult(fop.getDefaultHandler());
    transformer.transform(new DOMSource(testDoc), res);

    return (Document) domResult.getNode();
}

From source file:org.apache.fop.intermediate.AreaTreeParserTestCase.java

/** {@inheritDoc} */
protected Document parseAndRenderToIntermediateFormat(Source src) throws Exception {
    AreaTreeParser parser = new AreaTreeParser();

    //Set up XMLRenderer to render to a DOM
    TransformerHandler handler = testAssistant.getTransformerFactory().newTransformerHandler();
    DOMResult domResult = new DOMResult();
    handler.setResult(domResult);/*  ww w  .  j  ava2  s.  c o m*/
    FOUserAgent userAgent = createUserAgent();
    XMLRenderer renderer = new XMLRenderer(userAgent);
    userAgent.setRendererOverride(renderer);
    renderer.setContentHandler(handler);

    FontInfo fontInfo = new FontInfo();
    AreaTreeModel treeModel = new RenderPagesModel(userAgent, MimeConstants.MIME_FOP_AREA_TREE, fontInfo, null);
    parser.parse(src, treeModel, userAgent);
    treeModel.endDocument();

    return (Document) domResult.getNode();
}

From source file:org.apache.fop.intermediate.IFParserTestCase.java

/** {@inheritDoc} */
@Override// w  w  w.java  2  s.  c  om
protected Document parseAndRenderToIntermediateFormat(Source src) throws Exception {
    IFParser parser = new IFParser();

    FOUserAgent userAgent = createUserAgent();

    IFSerializer serializer = new IFSerializer();
    serializer.setContext(new IFContext(userAgent));
    DOMResult domResult = new DOMResult();
    serializer.setResult(domResult);

    parser.parse(src, serializer, userAgent);

    return (Document) domResult.getNode();
}