title: IBM Integration Bus Java Compute Node: output a w3c.dom.Document or String
body: <p>I have been working on a Java module to transform XMLs for the last few months. It is supposed to take a soap request and fill the soap:header element with additional elements from a metadata repository, for example. The module should be universally implementable into any middleware (my native system is SAP PI).</p>
  
  <p>Now I am tasked with implementing this module as a jar into a JavaCompute Node in IBM Integration Bus. The problem is that to export the resulting XML I need to get the data into the outMessage of the JavaCompute Node. However, I did not find a way to convert an org.w3c.com.Document to MbElement or to insert the Document or its content into the MbElement.</p>
  
  <p>Actually I did not see a way to put anything in there at all (not even an XML String) without using the IBM API as intended, so I would have to write code that reads my already finished Document and builds an MbElement from it.</p>
  
  <p>This looks like the following:</p>
  
  <pre><code>public void evaluate(MbMessageAssembly inAssembly) throws MbException {
  
      MbOutputTerminal out = getOutputTerminal("out");
      MbOutputTerminal alt = getOutputTerminal("alternate");
  
      MbMessage inMessage = inAssembly.getMessage();
  
      // create new empty message
      MbMessage outMessage = new MbMessage();
      MbMessageAssembly outAssembly = new MbMessageAssembly(inAssembly,
              outMessage);
  
      try {
          // optionally copy message headers
          // copyMessageHeaders(inMessage, outMessage);
          // ----------------------------------------------------------
          // Add user code below
  
          //Create an example output Document
          String outputContent = "&lt;element&gt;&lt;subelement&gt;Value&lt;/subelement&gt;&lt;/element&gt;";
          DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
          InputSource is = new InputSource();
          is.setCharacterStream(new StringReader(outputContent));
          Document outDocument = db.parse(is);
  
  //Get the Document or its content into the outRoot or outMessage somehow.
  
  MbElement outRoot = outMessage.getRootElement();
  
  //Start to iterate over the Document and use Methods like this to build up the MbElement?
  MbElement outBody = outRoot.createElementAsLastChild("request");
  
  // End of user code
  } catch (MbException e) { ...
  </code></pre>