When dealing with content handlers the data will come in to the pipeline as an XML node object $contentStream. This code will help convert that xml node object to string and stream outputs.
Input: node, datatype: object
Output: outString, datatype: String & outStream, datatype: object
Import the below classes.
Code:
Input: node, datatype: object
Output: outString, datatype: String & outStream, datatype: object
Import the below classes.
import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Node;
Code:
IDataCursor pipelineCursor = pipeline.getCursor(); Node node = (Node) IDataUtil.get( pipelineCursor, "node" ); pipelineCursor.destroy(); StringWriter sw = new StringWriter(); try { Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); t.setOutputProperty(OutputKeys.INDENT, "yes"); t.transform(new DOMSource(node), new StreamResult(sw)); // convert to string debug........... String x=sw.toString(); IDataUtil.put( pipelineCursor, "outStr", x); InputStream outStream = new ByteArrayInputStream(x.getBytes("UTF-8")); IDataUtil.put( pipelineCursor, "outStream", outStream); } catch (TransformerException e) { IDataUtil.put( pipelineCursor, "outStr", e); } catch (UnsupportedEncodingException e) { IDataUtil.put( pipelineCursor, "outStr", e); }