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:it.cnr.icar.eric.server.common.Utility.java

public org.w3c.dom.Element getSignatureElement(SOAPMessage msg)
        throws javax.xml.soap.SOAPException, javax.xml.transform.TransformerException {
    org.w3c.dom.Element sigElement = null;

    javax.xml.transform.Transformer xFormer = javax.xml.transform.TransformerFactory.newInstance()
            .newTransformer();/*from   w  ww  .j  av a2s .  co m*/

    // grab info out of msg
    javax.xml.soap.SOAPPart msgPart = msg.getSOAPPart();
    javax.xml.transform.Source msgSource = msgPart.getContent();

    // transform
    javax.xml.transform.dom.DOMResult domResult = new javax.xml.transform.dom.DOMResult();
    xFormer.transform(msgSource, domResult);

    //root node is the soap:Envelope
    Node envelopeNode = domResult.getNode();

    //now you have the node. the following code strips off the envelope of
    //the soap message to get to the actual content
    // Advance to envelope node in case of text nodes preceding it
    while ((envelopeNode.getLocalName() == null)
            || (!envelopeNode.getLocalName().equalsIgnoreCase("envelope"))) {
        envelopeNode = envelopeNode.getFirstChild();
    }

    // Advance to header within envelope node
    Node headerNode = envelopeNode.getFirstChild();

    while ((headerNode.getLocalName() == null) || (!headerNode.getLocalName().equalsIgnoreCase("header"))) {
        headerNode = headerNode.getNextSibling();
    }

    //System.err.println("headerNode name is: " + headerNode.getLocalName());
    // Advance to signature node within header
    Node sigNode = headerNode.getFirstChild();

    if (sigNode == null) {
        return null;
    }

    //System.err.println("sigNode: " + sigNode);
    while ((sigNode.getLocalName() == null) || (!sigNode.getLocalName().equalsIgnoreCase("signature"))) {
        sigNode = sigNode.getNextSibling();

        if (sigNode == null) {
            return null;
        }
    }

    //Desired Signature element may be inside a SOAP-SEC signature element
    if (!sigNode.getNamespaceURI().equals("http://www.w3.org/2000/09/xmldsig#")) {
        sigNode = sigNode.getFirstChild();

        while ((sigNode.getLocalName() == null) || (!sigNode.getLocalName().equalsIgnoreCase("signature"))) {
            sigNode = sigNode.getNextSibling();
        }
    }

    if (sigNode.getNamespaceURI().equals("http://www.w3.org/2000/09/xmldsig#")) {
        if (sigNode instanceof org.w3c.dom.Element) {
            sigElement = (org.w3c.dom.Element) sigNode;
        }
    }

    return sigElement;
}

From source file:de.betterform.agent.web.WebProcessor.java

private void doIncludes() {
    try {/*from  ww  w  .  ja v a 2s .co  m*/
        Node input = getXForms();
        String xsltPath = RESOURCE_DIR + "xslt/";
        URI styleURI = new File(WebFactory.getRealPath(xsltPath, getContext())).toURI()
                .resolve(new URI("include.xsl"));
        XSLTGenerator xsltGenerator = WebFactory.setupTransformer(styleURI, getContext());
        String baseURI = getBaseURI();
        String uri = baseURI.substring(0, baseURI.lastIndexOf("/") + 1);

        xsltGenerator.setParameter("root", uri);
        DOMResult result = new DOMResult();
        DOMSource source = new DOMSource(input);
        xsltGenerator.setInput(source);
        xsltGenerator.setOutput(result);
        xsltGenerator.generate();
        setXForms(result.getNode());

    } catch (XFormsException e) {
        e.printStackTrace();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

}

From source file:fr.gouv.finances.dgfip.xemelios.importers.DefaultImporter.java

/**
 * Importe le fichier specifie.//  ww w  .j a  v a 2s  .c om
 *
 * @param f Le fichier a importer
 * @see
 * fr.gouv.finances.cp.xemelios.importers.EtatImporteur#importe(java.io.File)
 */
@Override
protected FileInfo importFile(File f) throws Exception {
    logger.debug("generating " + f.getAbsolutePath());
    getImpSvcProvider().startLongWait();
    String fileEncoding = getFileEncoding(f);
    String xmlVersion = getFileXmlVersion(f);
    File tmpDir = getTmpDir();

    File fHeader = File.createTempFile("header-", "", tmpDir);
    File fRef = File.createTempFile("ref-", "", tmpDir);
    File fFooter = File.createTempFile("footer-", "", tmpDir);
    XmlSplitter xs = splitFile(fHeader, fRef, fFooter, tmpDir, f, fileEncoding);
    getImpSvcProvider().endLongWait();
    Pair collectivite = new Pair();
    Pair codeBudget = new Pair();

    //--------- check collectivite -------------
    if (col == null) {
        collectivite = xs.getCollectivite();
        if (collectivite != null && collectivite.isFull()) {
            // on a rcupr la collectivit
            getImpSvcProvider().setCollectivite(collectivite);
        } else if (getImpSvcProvider().getCollectivite() != null
                && getImpSvcProvider().getCollectivite().isFull()) {
            // on connait la collectivit
            collectivite = getImpSvcProvider().getCollectivite();
        } else {
            // ici on demande  entrer les infos sur la collectivits
            try {
                collectivite = getImpSvcProvider().getCollectivite(dm, f.getName(), collectivite);
            } catch (ToolException e) {
                removeTempDir();
                if (e.getErrorCode() == ToolException.ERROR_INTERRUPTED) {
                    getImpSvcProvider().displayMessage(e.getMessage(),
                            ImportServiceProvider.MSG_TYPE_INFORMATION);
                    return null;
                } else {
                    throw e;
                }
            }
        }
        col = collectivite;
    } else {
        // collectivit "par dfaut"
        collectivite = col;
    }
    //--------- check budget -------------
    if (bdg == null) {
        codeBudget = xs.getBudget();
        if (codeBudget != null && codeBudget.isFull()) {
            // on a rcupr le budget
            getImpSvcProvider().setBudget(codeBudget);
        } else if (getImpSvcProvider().getBudget() != null && getImpSvcProvider().getBudget().isFull()) {
            // on connait le budget
            codeBudget = getImpSvcProvider().getBudget();
        } else {
            // ici on demande  entrer les infos sur le budget
            try {
                codeBudget = getImpSvcProvider().getBudget(dm, collectivite, f.getName(), codeBudget);
            } catch (ToolException e) {
                removeTempDir();
                if (e.getErrorCode() == ToolException.ERROR_INTERRUPTED) {
                    getImpSvcProvider().displayMessage(e.getMessage(),
                            ImportServiceProvider.MSG_TYPE_INFORMATION);
                    return null;
                } else {
                    throw e;
                }
            }
        }
        bdg = codeBudget;
    } else {
        // budget "par dfaut"
        codeBudget = bdg;
    }

    //---------------------------------------------------
    ArrayList<File> dataFiles = new ArrayList<File>(xs.getDataFiles());
    String header = FileUtils.readTextFile(fHeader, fileEncoding);
    String footer = FileUtils.readTextFile(fFooter, fileEncoding);
    String ref = FileUtils.readTextFile(fRef, fileEncoding);

    int docCount = 1;
    DocumentBuilder db = dbf.newDocumentBuilder();

    // load documents
    TPersistenceConfig tpc = DataLayerManager.getImplementation().getPersistenceConfig(dm, getUser());
    if (tpc == null) {
        throw new RuntimeException("pas de configuration de persistence trouve pour " + dm.getId() + " dans "
                + dm.getBaseDirectory());
    }

    TLayer layer = tpc.getLayer(DataLayerManager.getImplementation().getLayerName());
    if (layer == null) {
        throw new RuntimeException("pas de persistence trouve pour ce moteur de persistence ("
                + DataLayerManager.getImplementation().getLayerName() + ") pour " + dm.getId() + " dans "
                + dm.getBaseDirectory());
    }

    TDocument pc = layer.getDocument(dm.getId());

    // check if document exists, and if so, if we must remove it
    if (DataLayerManager.getImplementation().isDocumentExists(dm, codeBudget, collectivite, f.getName(),
            user)) {
        boolean shouldImport = false;
        try {
            if (OVERWRITE_RULE_DEFAULT.equals(getOverwriteRule())) {
                shouldImport = getOverwrite(f.getName());
            } else if (OVERWRITE_RULE_ALWAYS.equals(getOverwriteRule())) {
                shouldImport = true;
            } else if (OVERWRITE_RULE_NEVER.equals(getOverwriteRule())) {
                shouldImport = false;
            } else if (OVERWRITE_RULE_ASK.equals(getOverwriteRule())) {
                shouldImport = getOverwrite(f.getName());
            }
            if (shouldImport) {
                logger.debug("importing");
                // this can be very long, display the infinite waiter
                getImpSvcProvider().startLongWait();
                long startDelete = System.currentTimeMillis();
                DataLayerManager.getImplementation().removeDocument(dm, codeBudget, collectivite, f.getName(),
                        user);
                importTimingOS.append(f.getName()).append(";;DEL;").append(Long.toString(startDelete))
                        .append(";").append(Long.toString(System.currentTimeMillis()));
                importTimingOS.println();
                getImpSvcProvider().endLongWait();
            } else {
                logger.debug("skipping");
                return new FileInfo();
            }
        } catch (DataAccessException daEx) {
            logger.error("DataAccessException while removing:", daEx.getCause());
            daEx.getCause().printStackTrace();
            throw daEx;
        } catch (DataConfigurationException dcEx) {
            logger.error("DataConfigurationException while removing:", dcEx.getCause());
            dcEx.getCause().printStackTrace();
        } catch (Exception ex) {
            // si exception ici, l'utilisateur veut annuler
            logger.error(ex);
            ex.printStackTrace();
            removeTempDir();
            return null;
        }
    }

    long startBC = System.currentTimeMillis();
    DataLayerManager.getImplementation().registerBudgetCollectivite(dm, codeBudget, collectivite,
            xs.getParentcollectivites(), f.getName(), getArchiveName(), user);
    importTimingOS.append(f.getName()).append(";;BC;").append(Long.toString(startBC)).append(";")
            .append(Long.toString(startBC = System.currentTimeMillis()));
    importTimingOS.println();
    DataLayerManager.getImplementation().saveSpecialKeys(dm, codeBudget, collectivite, f.getName(),
            getArchiveName(), xs.getSpecialKey1(), xs.getSpecialKey2(), xs.getSpecialKey3(), user);
    importTimingOS.append(f.getName()).append(";;SK;").append(Long.toString(startBC)).append(";")
            .append(Long.toString(System.currentTimeMillis()));
    importTimingOS.println();

    // import du repository
    boolean shouldDelete = !"true"
            .equals(applicationProperties.getProperty(Constants.SYS_PROP_IMPORT_AVOID_DELETE));
    if (!isCancelled()) {
        StringBuffer fullText = new StringBuffer();
        fullText.append("<?xml version=\"").append(xmlVersion).append("\" encoding=\"").append(fileEncoding)
                .append("\" ?>");
        fullText.append(header).append(ref).append(footer);
        Document doc = db.parse(new ByteArrayInputStream(fullText.toString().getBytes(fileEncoding)));
        if (pc.getRepositoryImportXsltFile() != null && pc.getRepositoryImportXsltFile().length() > 0) {
            Document doc2 = null;
            File xslNomencl = new File(new File(dm.getBaseDirectory()), pc.getRepositoryImportXsltFile());
            TransformerFactory tf = FactoryProvider.getTransformerFactory();
            Transformer trans = tf.newTransformer(new StreamSource(xslNomencl));
            DOMResult result = new DOMResult();
            DOMSource source = new DOMSource(doc);
            trans.transform(source, result);
            doc2 = (Document) result.getNode();
            if (doc2 != null) {
                doc = doc2;
            }
        }
        DataLayerManager.getImplementation().saveRepository(dm, collectivite, doc,
                xs.getReferenceNomenclature(), user);
    } else {
        logger.debug("cancelled");
    }
    // DEBUT
    for (int fileCount = 0; fileCount < dataFiles.size(); fileCount++) {
        if (isCancelled()) {
            break;
        }
        File df = dataFiles.get(fileCount);
        final int progress = (int) ((fileCount + 1) * 100.0 / dataFiles.size());
        processTempFile(df, fileEncoding, xmlVersion, header, footer, pc, collectivite, codeBudget, f, docCount,
                shouldDelete, progress);
        docCount++;
    }
    // FIN
    importTimingOS.append(f.getName()).append(";;REF;;").append(Long.toString(System.currentTimeMillis()));
    importTimingOS.println();
    if (shouldDelete) {
        fHeader.delete();
        fRef.delete();
        fFooter.delete();
        removeTempDir();
    }
    return xs.getFileInfo();
}

From source file:ambit.data.qmrf.QMRFObject.java

protected void write(Document doc, Writer out) throws Exception {
    Source source;//w  w w  . j a va  2 s  .  c o m
    try {
        DOMResult result = transform_help(doc, false);
        Document newdoc = (Document) result.getNode();
        newdoc.normalize();
        source = new DOMSource(newdoc);
    } catch (Exception x) {
        source = new DOMSource(doc);
    }

    Transformer xformer = TransformerFactory.newInstance().newTransformer();
    xformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, dtdSchema);
    xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "qmrf.dtd");
    xformer.setOutputProperty(OutputKeys.INDENT, "Yes");
    xformer.setOutputProperty(OutputKeys.STANDALONE, "No");

    Result result = new StreamResult(out);
    xformer.transform(source, result);
    out.flush();
    setNotModified();
    fireAmbitObjectEvent();
}

From source file:ambit.data.qmrf.QMRFObject.java

public void export2PDF(InputStream xsltfo, OutputStream pdf) throws Exception {
    Document doc = buildDocument();
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document xslt = builder.parse(xsltfo);
    DOMResult result = new DOMResult();
    transform(new DOMSource(doc), new DOMSource(xslt), result);
    Document foDom = (Document) result.getNode();
    convertDOM2PDF(foDom, pdf);//ww w.j  a v a  2s .  com
}

From source file:com.evolveum.midpoint.common.validator.Validator.java

public Node validateSchema(Element objectDoc, OperationResult objectResult) {
    OperationResult result = objectResult.createSubresult(Validator.class.getName() + ".validateSchema");
    DOMResult validationResult = new DOMResult();
    try {// w w  w .  jav  a  2  s  . c om
        xsdValidator.validate(new DOMSource(objectDoc), validationResult);
    } catch (SAXException e) {
        result.recordFatalError("Validation error: " + e.getMessage(), e);
        objectResult.computeStatus("Validation error: " + e.getMessage());
        return null;
    } catch (IOException e) {
        result.recordFatalError("IO error during validation: " + e.getMessage(), e);
        objectResult.computeStatus("IO error during validation: " + e.getMessage());
        return null;
    }
    result.recordSuccess();
    return validationResult.getNode();
}

From source file:com.netspective.sparx.util.xml.XmlSource.java

/**
 * Given the current xmlDoc that was already read in, send it through the transformation stylesheet and assign
 * the value back to xmlDoc./*from www.  j  a v a2 s.  c o m*/
 */
public void preProcess(File styleSheet) {
    try {
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(new StreamSource(styleSheet));

        DOMResult result = new javax.xml.transform.dom.DOMResult();
        transformer.transform(new DOMSource(xmlDoc), result);
        xmlDoc = (Document) result.getNode();
    } catch (Exception e) {
        //StringWriter stack = new StringWriter();
        //e.printStackTrace(new PrintWriter(stack));
        addError("Failed to pre-process using style-sheet " + styleSheet.getAbsolutePath() + ": "
                + e.toString());
    }
}

From source file:ambit.data.qmrf.QMRFObject.java

public void transform_and_read(Reader in, boolean appendHelp) throws Exception {

    DOMResult result = new DOMResult();
    String filename = "ambit/data/qmrf/qmrf_insert_help.xsl";
    if (!appendHelp)
        filename = "ambit/data/qmrf/qmrf_delete_help.xsl";
    InputStream xslt = this.getClass().getClassLoader().getResourceAsStream(filename);
    xsltTransform(in, xslt, result);//from   w ww  .j a v  a2 s  . c  om
    xslt.close();

    Document doc = (Document) result.getNode();
    doc.normalize();

    fromXML(doc.getDocumentElement());
    setNotModified();
    fireAmbitObjectEvent();
}

From source file:org.ambraproject.article.service.XslIngestArchiveProcessor.java

/**
 * Run the zip file through the xsl stylesheet
 *
 * @param zip          the zip archive containing the items to ingest
 * @param zipInfo      the document describing the zip archive (adheres to zip.dtd)
 * @param articleXml      the stylesheet to run on <var>zipInfo</var>; this is the main script
 * @param doiUrlPrefix DOI URL prefix//w w w .jav  a  2 s . com
 * @return a document describing the fedora objects to create (must adhere to fedora.dtd)
 * @throws javax.xml.transform.TransformerException
 *          if an error occurs during the processing
 */
private Document transformZip(ZipFile zip, String zipInfo, Document articleXml, String doiUrlPrefix)
        throws TransformerException, URISyntaxException {
    Transformer t = getTranslet(articleXml);
    t.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    t.setURIResolver(new ZipURIResolver(zip));

    // override the doi url prefix if one is specified in the config
    if (doiUrlPrefix != null)
        t.setParameter("doi-url-prefix", doiUrlPrefix);

    /*
     * Note: it would be preferable (and correct according to latest JAXP specs) to use
     * t.setErrorListener(), but Saxon does not forward <xls:message>'s to the error listener.
     * Hence we need to use Saxon's API's in order to get at those messages.
     */
    final StringWriter msgs = new StringWriter();
    MessageWarner em = new MessageWarner();
    ((Controller) t).setMessageEmitter(em);
    t.setErrorListener(new ErrorListener() {
        public void warning(TransformerException te) {
            log.warn("Warning received while processing zip", te);
        }

        public void error(TransformerException te) {
            log.warn("Error received while processing zip", te);
            msgs.write(te.getMessageAndLocation() + '\n');
        }

        public void fatalError(TransformerException te) {
            log.warn("Fatal error received while processing zip", te);
            msgs.write(te.getMessageAndLocation() + '\n');
        }
    });

    Source inp = new StreamSource(new StringReader(zipInfo), "zip:/");
    DOMResult res = new DOMResult();

    try {
        t.transform(inp, res);
    } catch (TransformerException te) {
        if (msgs.getBuffer().length() > 0) {
            log.error(msgs.getBuffer().toString());
            throw new TransformerException(msgs.toString(), te);
        } else
            throw te;
    }
    if (msgs.getBuffer().length() > 0)
        throw new TransformerException(msgs.toString());
    return (Document) res.getNode();
}

From source file:es.urjc.mctwp.image.impl.dicom.DicomImagePlugin.java

/**
 * Obtains XML node representation of a singleImage
 * /*from  w w  w .jav  a  2 s  . c  o  m*/
 * @param single
 * @return
 * @throws ImageException
 */
private Node toXml(SingleImage single) throws ImageException {
    DicomInputStream dis = null;
    TransformerHandler th = null;
    DOMResult result = null;
    File source = null;

    try {

        // Prepare XSLT transformer
        result = new DOMResult();
        th = getTransformerHandler();
        th.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
        th.setResult(result);

        // Get writer and set image pixel data excluded from XML
        final SAXWriter writer = new SAXWriter(th, null);
        writer.setExclude(new int[] { Tag.PixelData });

        // Parse and convert to XML
        source = single.getContent();
        dis = new DicomInputStream(source);
        dis.setHandler(writer);
        // dis.readDicomObject(new BasicDicomObject(), -1);
        dis.readDicomObject();

    } catch (Exception e) {
        logger.error(e.getMessage());
        throw new ImageException(e);
    } finally {
        try {
            dis.close();
        } catch (IOException ioe) {
            logger.error(ioe.getMessage());
        }
    }

    return result.getNode();
}