I need covert xml files in Nifi 1.5. I try execute this script in ExcecuteScript processor:
import groovy.xml.*
import javax.xml.transform.TransformerFactory
import javax.xml.transform.Transformer
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets
import org.apache.nifi.processor.io.StreamCallback
import java.io.StringWriter
flowFile = session.get()
if(!flowFile) return
session.write(flowFile,
{
inputStream, outputStream ->
def xml = IOUtils.toString(inputStream, 'UTF-8')
def reader = new StringReader(xml)
def doc = DOMBuilder.parse(reader)
def records = doc.documentElement
TransformerFactory tFactory = TransformerFactory.newInstance();
StringWriter writer = new StringWriter();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(records);
StreamResult result = new StreamResult(writer);
String strString = writer.toString()
outputStream.write(strString.getBytes(StandardCharsets.UTF_8))
} as StreamCallback
)
session.transfer(flowFile, REL_SUCCESS)
And Output FlowFile is empty. In local this part working:
def xml = "<xml>...</xml>"
def reader = new StringReader(xml)
def doc = DOMBuilder.parse(reader)
def records = doc.documentElement
TransformerFactory tFactory = TransformerFactory.newInstance();
StringWriter writer = new StringWriter();
Transfor mer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(records);
StreamResult result = new StreamResult(writer);
String strString = writer.toString()
Why output file is empty?
<xml><a>bbbbbbb</a></xml>and it also returns an empty string. so, please provide input data example. - daggett