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);
}