awk convert xml to csv


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk convert xml to csv
# 1  
Old 06-08-2011
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

Code:
 <Worksheet ss:Name="Map1">
    <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1"
     x:FullRows="1" ss:DefaultColumnWidth="60">
     <Row>
      <Cell><Data ss:Type="String">Column1</Data></Cell>
      <Cell><Data ss:Type="String">Column2</Data></Cell>
     </Row>
     <Row>
      <Cell><Data ss:Type="String">Val1</Data></Cell>
      <Cell><Data ss:Type="String">Val2</Data></Cell>
     </Row>
    </Table>
    <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
     <PageSetup>
      <Header x:Margin="0.4921259845"/>
      <Footer x:Margin="0.4921259845"/>
      <PageMargins x:Bottom="0.984251969" x:Left="0.78740157499999996"
       x:Right="0.78740157499999996" x:Top="0.984251969"/>
     </PageSetup>
     <Selected/>
     <Panes>
      <Pane>
       <Number>3</Number>
       <ActiveRow>2</ActiveRow>
       <ActiveCol>1</ActiveCol>
      </Pane>
     </Panes>
     <ProtectObjects>False</ProtectObjects>
     <ProtectScenarios>False</ProtectScenarios>
    </WorksheetOptions>
   </Worksheet>

Should be

Test.csv

Code:
  Column1;Column2
  Val1;Val2



Any suggestions??

Thanks in advance !!
# 2  
Old 06-08-2011
One way - but does not use awk
Code:
$ grep Cell Test.csv | sed 's/<[^>]*>//g' | sed '$!N;s/\n/;/' | sed 's/ //g'
Column1;Column2
Val1;Val2
$

# 3  
Old 06-08-2011
thanks fpmurphy, is there are a way to solve this issue with awk ?
# 4  
Old 06-08-2011
AWK:
Code:
awk '/<Cell>/{sub(".*<Cell><[^>]+>","",$0);sub("<.*","",$0);s=s";"$0}/<\/Row>/{sub("^;","",s);print s;s=""}' file

# 5  
Old 06-08-2011
I don't know what is the different between this xml file but it not works:

Code:
<Table x:FullColumns='1' x:FullRows='1'>
<Row ss:AutoFitHeight='0' ss:Height='35'>
        <Cell ss:MergeAcross='2' ss:StyleID='title'><Data ss:Type='String'>Export Results for Table:</Data></Cell>
        <Cell ss:MergeAcross='1' ss:StyleID='titletext'><Data ss:Type='String'></Data></Cell>
        <Cell ss:MergeAcross='2' ss:StyleID='titletext'><Data ss:Type='String'>Results: 4 Rows</Data></Cell>
</Row>
<Row ss:AutoFitHeight='0' ss:Height='35'>
        <Cell ss:MergeAcross='2' ss:StyleID='title'><Data ss:Type='String'>Date of creation spreadsheet:</Data></Cell>
        <Cell ss:MergeAcross='1' ss:StyleID='titletext'><Data ss:Type='String'>June 3, 2011, 12:01</Data></Cell>
</Row>
<Row ss:Height='12'>
<Cell ss:StyleID='columntitleleft'><Data ss:Type='String'>test1</Data><NamedCell ss:Name='_FilterDatabase'/></Cell>
<Cell ss:StyleID='columntitlecenter'><Data ss:Type='String'>test2</Data><NamedCell ss:Name='_FilterDatabase'/></Cell>
<Cell ss:StyleID='columntitlecenter'><Data ss:Type='String'>test3</Data><NamedCell ss:Name='_FilterDatabase'/></Cell>
<Cell ss:StyleID='columntitlecenter'><Data ss:Type='String'>test4</Data><NamedCell ss:Name='_FilterDatabase'/></Cell>
</Row>

Code:
awk '/<Cell>/{sub(".*<Cell><[^>]+>","",$0);sub("<.*","",$0);s=s";"$0}/<\/Row>/{sub("^;","",s);print s;s=""}' test4.xml

the result is empty
and

Code:
grep Cell test4.xml | sed 's/<[^>]*>//g' | sed '$!N;s/\n/;/' | sed 's/ //g'
ExportResultsforTable:;
Results:4Rows;Dateofcreationspreadsheet:
June3,2011,12:01;test1
test2;test3
test4

Is that posible to convert the Rows tags line by line ?
# 6  
Old 06-08-2011
Try:
Code:
awk '/<Cell.*>/{sub(".*<Cell[^>]+><[^>]+>","",$0);sub("<.*","",$0);s=s";"$0}/<\/Row>/{sub("^;","",s);print s;s=""}' file

This User Gave Thanks to bartus11 For This Post:
# 7  
Old 06-08-2011
Great , thank you Guys !
Login or Register to Ask a Question

Previous Thread | Next Thread

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 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

5. Shell Programming and Scripting

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... (7 Replies)
Discussion started by: dineshydv
7 Replies

6. 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

7. 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

8. Shell Programming and Scripting

convert this into csv using awk/shell script

Hi Scripting gurus, I need to convert following text snippet into csv. please help Input heading1 = data1 heading2 = data2 .. .. heading n = data n heading 1 = data1 .. .. Output data1,data2,....,data n (3 Replies)
Discussion started by: azs0309
3 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
Login or Register to Ask a Question