Support Questions

Find answers, ask questions, and share your expertise
Announcements
Celebrating as our community reaches 100,000 members! Thank you!

How to Convert XML file into CSV file using NIFI

avatar

i have XML files about 1-2 GB i want it to convert into CSV format using apache nifi.

so that i can process CSV for joining the two csv.

1 ACCEPTED SOLUTION

avatar
Guru

Hi @Nitin Damle

You can use the ConvertRecord processor (with XMLReader/CSVRecordSetWriter controller services). I have an article here that shows CSV to XML (with CSVReader/XMLRecordSetWriter controller services), so you just need to do the inverse of that record transformation:

https://community.hortonworks.com/content/kbentry/199310/xml-record-writer-in-apache-nifi-170.html

-Andrew

View solution in original post

22 REPLIES 22

avatar
Guru

Hi @Nitin Damle

I'm assuming you got the flow working with the sample data and template I provided.

Can you provide an example of the desired csv output you are hoping to achieve from the cm_samples.xml file you provided? That would help me understand your end goal for the flow.

Thanks!

avatar

xmlsampleop.png


@Andrew Lim you can refercm_sample.txt


this image and file


avatar
Guru

Thanks for the information Nitin.

It seems like it would make sense to "clean up" your incoming XML using the TransformXML processor (https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.6.0/org.apache...) prior to ConvertRecord since there is data there like the header info that you don't care about for the CSV file. Additionally, could change the tag from `p` to its `name` attribute.

I haven't used the TransformXML processor before (or worked with XSLT files before). Take a look yourself and see if you think it could be a solution for you. I will try it out myself if I get the opportunity.

avatar

Hi Andrew,

I am not able to convert xml to csv as suggested by you to do the inverse of this. Could you please provide the nifi xml file so that I can upload the template and check.


avatar
Guru

avatar

Hi Andrew , this works for single xml but I have nested xml. How to convert nested xml to multiple csvs ?

avatar

@Andrew Lim Is there anything possible for nested xml to multiple csvs ?Attached is the nested xml file ad.xml

avatar

@Andrew Lim After importing it giving me this error

106511-csvtoxmlerror.png

avatar
Contributor

You can use this NIFI Groovy processor that converts XML to CSV or AVRO

https://github.com/maxbback/nifi-xml