Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 12-15-2016 05:41 AM
Hi guys,
Is there any process where i can make my XSL File to CSV File?
Thanks.
Created 12-15-2016 06:00 AM
@regie canada you want to convert XSL to CSV? just wanting to confirm you didn't mean XLS.
Created 12-15-2016 05:46 AM
Convert xsl to json using this
https://community.hortonworks.com/articles/29474/nifi-converting-xml-to-json.html
and then convert json to csv using this
Created 12-15-2016 06:00 AM
@regie canada you want to convert XSL to CSV? just wanting to confirm you didn't mean XLS.
Created 12-15-2016 06:11 AM
Hi sir, yes it is XSL. We made a program that will turn our XML to XSL.
This is the current sample output:
1000002746|CRl Campbell|905-899-3495|905-899-3495|[email protected]|11675 Burnaby Rd ||Wainfleet|province-ONTA|L0S1V0|Active|HostedIPV_1000003883_SA
We use PIPE for delimiter.
and now I need to make it csv so i can convert it to json.
Thank.
Created 12-15-2016 06:16 AM
i guess based on your comment, use replacetext processor to replace all occurrence of | with ,.
Created 12-15-2016 06:36 AM
you may need header information to convert this to json, technically even the xsl output you have is CSV, just delimited with pipe. I think you can directly use the executescript processor, to call a python script, and go from xsl to json..
getfile (read the file with xsl data ) -> splittext (split the data into lines )-->execute script (with script below to convert to json) --> merge content (merge contents based on fragment.identifier attribute of split text) --> put file (gives you json files )
--- example scrip for converting to json..
import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
class PyStreamCallback(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
header=["column1","column2","column3"...] # the header for the xsl, this will become the name for json nodes
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
output={}
for column in text.split("|"):
index=0 # counter to keep track of column, so we can assing a name to the value.
output[header(index)]=column
outputStream.write(bytearray(json.dumps(output, indent=4).encode('utf-8')))
flowFile = session.get()
if (flowFile != None):
flowFile = session.write(flowFile,PyStreamCallback())
flowFile = session.putAttribute(flowFile, "filename", flowFile.getAttribute('filename').split('.')[0]+'_translated.json')
session.transfer(flowFile, REL_SUCCESS)
Created 12-15-2016 06:56 AM
Thank you so much for answering.
Do I need to install anything to run a python script?
Created 12-15-2016 03:42 PM
@regie canada no you dont have to, it should work out of the box.
Created 02-23-2019 10:58 AM
You can also try this NIFI groovy processor that converts XML to CSV