CSV to quasi-XML

T

Travis

Hi there,

Never written a line of Perl until now but I think it might be perfect
for this little program I need.

I have some CSV files that are given to me and I need to spit them in
a format that kind of looks like XML but I don't think it is. The
structure looks something like this:

<ADDRESSES>
<struct>
<field name="First" value="John" />
<field name="Last" value="Doe" />
<field name="City" value="San Francisco" />
</struct><struct>
<field name="First" value="Jane" />
<field name="Last" value="Johnson" />
<field name="City" value="New York City" />
</struct>
</ADDRESSES>


I don't think that's standard XML is it? If so please let me know so I
can change my google searching on the topic.

Anyway, I get CSV's that look something like this:

First,Last,City
John,Doe,San Francisco
Jane,Johnson,New York City


I'm a C/C++ person by nature but I thought this would be a good way to
get my hands in Perl and learn a bit.

Any guidance is helpful. Thanks.
 
T

Travis

Oh also there should be a newline \n between the closing </struct> and
the next <struct>
 
A

A. Sinan Unur

@w4g2000prd.googlegroups.com
:
Never written a line of Perl until now but I think it might be
perfect for this little program I need.

It looks you are planning to have someone else write the lines of
Perl that might be needed rather than writing them yourself.
I have some CSV files that are given to me and I need to spit them
in a format that kind of looks like XML but I don't think it is.
The structure looks something like this:

<ADDRESSES>
<struct>
<field name="First" value="John" />
<field name="Last" value="Doe" />
<field name="City" value="San Francisco" />
</struct><struct>
<field name="First" value="Jane" />
<field name="Last" value="Johnson" />
<field name="City" value="New York City" />
</struct>
</ADDRESSES>


I don't think that's standard XML is it?

Of course, it is.
If so please let me know
so I can change my google searching on the topic.

Why would searching Google be easier than writing the program in the
first place?
Anyway, I get CSV's that look something like this:

First,Last,City
John,Doe,San Francisco
Jane,Johnson,New York City

I'm a C/C++ person by nature

No one is a 'C/C++ person' by nature. If you know C, this is trivial
to write. So, first write the program in C, then read
but I thought this would be a good
way to get my hands in Perl and learn a bit.

Any guidance is helpful. Thanks.

OK, here is a part of a fish:

my ($first, $last, $city) = split /,/, $line;

print <<STRUCT;
<struct>
<field name="First" value="$first" />
<field name="Last" value="$last" />
<field name="City" value="$city" />
</struct>
STRUCT

There is also:

http://csv2xml.sourceforge.net/

Sinan

--
A. Sinan Unur <[email protected]>
(remove .invalid and reverse each component for email address)

comp.lang.perl.misc guidelines on the WWW:
http://www.rehabitation.com/clpmisc/
 
T

Travis

@w4g2000prd.googlegroups.com
:


It looks you are planning to have someone else write the lines of
Perl that might be needed rather than writing them yourself.






Of course, it is.


Why would searching Google be easier than writing the program in the
first place?






No one is a 'C/C++ person' by nature. If you know C, this is trivial
to write. So, first write the program in C, then read



OK, here is a part of a fish:

my ($first, $last, $city) = split /,/, $line;

print <<STRUCT;
<struct>
    <field name="First" value="$first" />
    <field name="Last" value="$last" />
    <field name="City" value="$city" />
</struct>
STRUCT

There is also:

http://csv2xml.sourceforge.net/

Sinan

--
A. Sinan Unur <[email protected]>
(remove .invalid and reverse each component for email address)

comp.lang.perl.misc guidelines on the WWW:http://www.rehabitation.com/clpmisc/

lol thanks for the taste. i appreciate it.
 
C

ccc31807

I have some CSV files that are given to me and I need to spit them in
a format that kind of looks like XML but I don't think it is.

The pseudocode for your little problem looks like this:

open infile for reading;
open outfile for writing;
while outfile is open;
read each line;
remove newline character;
split on delimiter into data structure;
join into string representation of output;
print string to your outfile;
close infile;
close outfile;

The functions you will need are open, close, while, chomp, split,
join, print (or printf or sprintf), and possibly some data structure
specific functions depending on your approach. Personally, I would use
an array.
The
structure looks something like this:

<ADDRESSES>
<struct>
<field name="First" value="John" />
<field name="Last" value="Doe" />
<field name="City" value="San Francisco" />
</struct><struct>
<field name="First" value="Jane" />
<field name="Last" value="Johnson" />
<field name="City" value="New York City" />
</struct>
</ADDRESSES>

This is well formed XML. You might want to know what 'well formed'
means.
I'm a C/C++ person by nature but I thought this would be a good way to
get my hands in Perl and learn a bit.

Good. As you will discover, Perl is optimized to perform a pretty
narrow range of tasks, but this is an ideal job for Perl. In my job
(database manager) I use Perl for about 80% of everything I do, most
of which is very similar to your problem. I have used C as well, but I
don't get to do much bit twiddling.

CC
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top