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.
Re: CSV to quasi-XML
Oh also there should be a newline \n between the closing </struct> and
the next <struct>
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/
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/
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.
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
Re: CSV to quasi-XML
Thanks all for the wonderful help.