Convert xml to csv


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert xml to csv
# 1  
Convert xml to csv

I need to convert below xml code to csv. I searched other posts as well but this post (_https://www.unix.com/shell-programming-scripting/174417-extract-parse-xml-data-statistic-value-csv.html) gives "sed command garbled" error. As of now I have written a long script to do it, but can it be done with single sed command.??
XML :
Code:
<ticketing>     
    <ticketingProduct name="Prod 4">       
        <ticketingEvent>Prod 4 - Event 1</ticketingEvent>     
        <ticketingEvent>Prod 4 - Event 2</ticketingEvent>     
        <ticketingEvent>Prod 4 - Event 3</ticketingEvent>     
    </ticketingProduct> 
    <ticketingProduct name="Prod 3">      
        <ticketingEvent>Prod 3 - Event 1</ticketingEvent>    
        <ticketingEvent>Prod 3 - Event 2</ticketingEvent>    
    </ticketingProduct>
    <ticketingProduct name="Prod 2">      
        <ticketingEvent>Prod 2 - Event 1</ticketingEvent>    
    </ticketingProduct> 
    <ticketingProduct name="Prod 1">      
        <ticketingEvent>Prod 1 - Event 1</ticketingEvent>    
        <ticketingEvent>Prod 1 - Event 2</ticketingEvent>    
    </ticketingProduct>  
</ticketing>

and what i need is
Code:
Prod 4,Prod 4 - Event 1
Prod 4,Prod 4 - Event 2
Prod 4,Prod 4 - Event 3
Prod 3,Prod 3 - Event 1
Prod 3,Prod 3 - Event 2
Prod 2,Prod 2 - Event 1
Prod 1,Prod 1 - Event 1
Prod 1,Prod 1 - Event 2

basically its in format ticketingProduc, ticketingEvent
any suggestion is appreciated..

Moderator's Comments:
Mod Comment How to use code tags

Last edited by Franklin52; 01-19-2012 at 04:51 AM.. Reason: Please use code tags for code and data samples, thank you
# 2  
Code:
perl -ne '
if (/<ticketingProduct name/../<\/ticketingProduct>/) {
    if (/<ticketingProduct name/) { s/.*?"(.*?)"./$1/; $x = $1 }
    if (/<ticketingEvent>/) { s|<ticketingEvent>(.*?)</ticketingEvent>|$1|; $y = $1; print "$x,$y\n" }
}' inputfile

# 3  
In nawk ..
Code:
$ nawk -F'[<>]' '/<ticketingEvent/{split($3,a,"-");print a[1]","$3}' infile

This User Gave Thanks to jayan_jay For This Post:
# 4  
Quote:
Originally Posted by balajesuri
Code:
perl -ne '
if (/<ticketingProduct name/../<\/ticketingProduct>/) {
    if (/<ticketingProduct name/) { s/.*?"(.*?)"./$1/; $x = $1 }
    if (/<ticketingEvent>/) { s|<ticketingEvent>(.*?)</ticketingEvent>|$1|; $y = $1; print "$x,$y\n" }
}' inputfile

Thanks balajesuri but perl isn't availanle. Sorry I didnt mentioned it before.

Quote:
Originally Posted by jayan_jay
In nawk ..
Code:
$ nawk -F'[<>]' '/<ticketingEvent/{split($3,a,"-");print a[1]","$3}' infile

Thanks jayan but can you please make me understand this code.?? I am not comfortable with awk. Can this be done with sed command.??
Also i see this code doesnt produce desired output when productname isn't repeating in event name. For-example it doesnt give desired output for below code:
Code:
<ticketing>
        <ticketingProduct name="Prod 1">
                <ticketingEvent>Event 1</ticketingEvent>
                <ticketingEvent>Event 2</ticketingEvent>
                <ticketingEvent>Event 3</ticketingEvent>
        </ticketingProduct>
        <ticketingProduct name="Prod 2">
                <ticketingEvent>Event 1</ticketingEvent>
                <ticketingEvent>Event 2</ticketingEvent>
        </ticketingProduct>
        <ticketingProduct name="Prod 3">
                <ticketingEvent>Event 1</ticketingEvent>
                <ticketingEvent>Event 2</ticketingEvent>
                <ticketingEvent>Event 3</ticketingEvent>
        </ticketingProduct>
        <ticketingProduct name="Prod 4">
                <ticketingEvent>Event 1</ticketingEvent>
                <ticketingEvent>Event 2</ticketingEvent>
                <ticketingEvent>Event 3</ticketingEvent>
                <ticketingEvent>Event 4</ticketingEvent>
        </ticketingProduct>
</ticketing>


Last edited by Franklin52; 01-19-2012 at 04:52 AM.. Reason: Code tags
# 5  
You don't have Perl!!!!!!!! Smilie Which esoteric *nix system is that, which has awk and not Perl?
# 6  
Quote:
Originally Posted by balajesuri
You don't have Perl!!!!!!!! Smilie Which esoteric *nix system is that, which has awk and not Perl?
dont get angry buddy. What i mean to say is- perl should not be used. It should be ksh only. Its weird but quality gp has set such guidelines...
# 7  
I'm just kidding mate Smilie No worries. I understood the meaning of 'perl isnt available' as 'i dont have perl on my system'. My bad.. Smilie
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #229
Difficulty: Easy
According to NetMarketShare, in September 2019 Linux had a 2% global market share of the desktop / laptop computer market.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Convert CSV file to nested XML file using UNIX/PERL?

we have a CSV which i need to convert to XML using Perl or Unix shell scripting. I was able to build this XML in oracle database. However, SQL/XML query is running for long time. Hence, I'm considering to write a Perl or shell script to generate this XML file. Basically need to build this XML... (3 Replies)
Discussion started by: laknar
3 Replies

2. Shell Programming and Scripting

Convert XML to CSV using awk or shell script

Hello, I am working on a part of code where I need a awk or shell script to convert the given XML file to CSV or TXT file. There are multiple xml files and of different structure, so a single script is required for converting data. I did find a lot of solutions in the forum but... (16 Replies)
Discussion started by: Rashmitha
16 Replies

3. Shell Programming and Scripting

How to convert xml to csv ?

I am in need of converting billions of XML into csv file to load data to DB, i have found the below code in perl but not sure why it's not working properly. CODE: #!/usr/bin/perl # Script to illustrate how to parse a simple XML file # and pick out all the values for a specific element, in... (1 Reply)
Discussion started by: rspwilliam
1 Replies

4. Shell Programming and Scripting

Convert XML file to CSV file

Hi Guys, I am new to Shell scripting and need to convert an XML files to a CSV file. My actual problem is that XML file loading is taking hours and I have decided to convert the XML structure to row based data in a CSV file. My XML file: Message846 can repeat within main loop and... (1 Reply)
Discussion started by: qamar.shahbaz
1 Replies

5. Shell Programming and Scripting

convert huge .xml file in .csv with specific column.

I have huge xml file in server and i want to convert it to .csv with specific column ... i have search in blog but i didn't get any usefully command. Thanks in advance (1 Reply)
Discussion started by: pareshkp
1 Replies

6. Shell Programming and Scripting

awk convert xml to csv

Hi, I have an xml file and I want to convert it with awk in to a csv file Test.xml <Worksheet ss:Name="Map1"> <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="60"> <Row> <Cell><Data... (6 Replies)
Discussion started by: research3
6 Replies

7. UNIX for Dummies Questions & Answers

urgent help to convert xml to xsl or csv

Urgent help to transfer data from .xml to xl sheet where each attribute and value goes into seperate column.Please help me with the command.Please help Thanks Uma (9 Replies)
Discussion started by: umapearl
9 Replies

8. Shell Programming and Scripting

Convert XML to CSV format

Can any one give the idea on this, please. I have the following XML file and wants to convert into CSV(comma separated value) format. <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE Waveset PUBLIC 'waveset.dtd' 'waveset.dtd'> <Waveset> <Object name='ra8736'> <Attribute name='ADDRESS'... (2 Replies)
Discussion started by: kumar04
2 Replies

9. Shell Programming and Scripting

Help to convert XML to CSV

Apologies if this has already been covered in this site somewhere, I did try looking but without any success. I am new to the whole XML thing, very late starter, and have a requirement to convert an XML fiule to a CSV fomat. I am crrently working on a Solaris OS. Does anyone have any suggestions,... (2 Replies)
Discussion started by: rossingi_33
2 Replies

10. Shell Programming and Scripting

Sample Unix script file to convert .xml to .csv

Dear all, Can you send me a script file the changes .xml to .csv file. Thanks, Srinivasa (4 Replies)
Discussion started by: srinivasaphani
4 Replies

Featured Tech Videos