CSV to quasi-XML

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.
Travis [ Mo, 14 April 2008 23:30 ] [ ID #1942335 ]

Re: CSV to quasi-XML

Oh also there should be a newline \n between the closing </struct> and
the next <struct>
Travis [ Mo, 14 April 2008 23:34 ] [ ID #1942336 ]

Re: CSV to quasi-XML

Travis <travis.bowers [at] gmail.com> wrote in
news:1db6609e-07f3-4388-befb-9088405d95e9
[at] 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
<URL:http://www.ebb.org/PickingUpPerl/>. You can then come back and
ask if you run into any problems.

> 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 <1usa [at] llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)

comp.lang.perl.misc guidelines on the WWW:
http://www.rehabitation.com/clpmisc/
1usa [ Mo, 14 April 2008 23:52 ] [ ID #1942338 ]

Re: CSV to quasi-XML

Travis <travis.bowers [at] gmail.com> wrote in
news:7f4a5bd7-8002-4b8e-b91d-08288e1ff51c [at] u36g2000prf.google groups.co
m:

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

I knew I was making a mistake replying. *Sigh*. Just confirmed my
expectations.

Sinan

--
A. Sinan Unur <1usa [at] llenroc.ude.invalid>
(remove .invalid and reverse each component for email address)

comp.lang.perl.misc guidelines on the WWW:
http://www.rehabitation.com/clpmisc/
1usa [ Mo, 14 April 2008 23:52 ] [ ID #1942340 ]

Re: CSV to quasi-XML

On Apr 14, 2:52=A0pm, "A. Sinan Unur" <1... [at] llenroc.ude.invalid> wrote:
> Travis <travis.bow... [at] gmail.com> wrote in
> news:1db6609e-07f3-4388-befb-9088405d95e9
> [at] 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>
> > =A0 =A0 <field name=3D"First" value=3D"John" />
> > =A0 =A0 <field name=3D"Last" value=3D"Doe" />
> > =A0 =A0 <field name=3D"City" value=3D"San Francisco" />
> > </struct><struct>
> > =A0 =A0 <field name=3D"First" value=3D"Jane" />
> > =A0 =A0 <field name=3D"Last" value=3D"Johnson" />
> > =A0 =A0 <field name=3D"City" value=3D"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
> <URL:http://www.ebb.org/PickingUpPerl/>. You can then come back and
> ask if you run into any problems.
>
> > 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) =3D split /,/, $line;
>
> print <<STRUCT;
> <struct>
> =A0 =A0 <field name=3D"First" value=3D"$first" />
> =A0 =A0 <field name=3D"Last" value=3D"$last" />
> =A0 =A0 <field name=3D"City" value=3D"$city" />
> </struct>
> STRUCT
>
> There is also:
>
> http://csv2xml.sourceforge.net/
>
> Sinan
>
> --
> A. Sinan Unur <1... [at] llenroc.ude.invalid>
> (remove .invalid and reverse each component for email address)
>
> comp.lang.perl.misc guidelines on the WWW:http://www.rehabitation.com/clpm=
isc/

lol thanks for the taste. i appreciate it.
Travis [ Mo, 14 April 2008 23:55 ] [ ID #1942341 ]

Re: CSV to quasi-XML

On Apr 14, 5:30 pm, Travis <travis.bow... [at] gmail.com> wrote:
> 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
cartercc [ Di, 15 April 2008 14:33 ] [ ID #1943131 ]

Re: CSV to quasi-XML

Thanks all for the wonderful help.
Travis [ Mi, 16 April 2008 01:23 ] [ ID #1944036 ]
Perl » comp.lang.perl.misc » CSV to quasi-XML

Vorheriges Thema: FAQ 9.8 How do I fetch an HTML file?
Nächstes Thema: Can "perldoc" take input from a pipe?