develooper Front page | perl.beginners | Postings from February 2002

RE: PERL and XML Parser

Thread Previous | Thread Next
From:
Stout, Joel R
Date:
February 1, 2002 09:41
Subject:
RE: PERL and XML Parser
Message ID:
E50C78AF1CD9C7468CE52A3399B61744C0599A@ljcbs067
I not sure how more experienced Perl developers feel but in addition to
XML::Parser, I found XML::SimpleObject a great way to start parsing XML.
Here's a link:

http://www.xml.com/pub/a/2001/04/18/perlxmlqstart1.html 


Additionally, you can model the data anyway you want, but here's a little
twist on what you have that may be worth pondering:

<album>
	<artist>Alice in Chains</artist>   
	<owner>Percy</owner>
   	<category>Rock</category>   
</album> 
<album>
	<artist>The Pixies</artist>   
	<owner>Percy</owner>
   	<category>Rock</category>   
</album> 
<album>
	<artist>Percy and the Test Tube Babies</artist>   
	<owner>Percy</owner>
   	<category>Rock</category>   
</album>   
<album>
	<artist>Bob Marley</artist>   
	<owner>Percy</owner>
   	<category>Reggae</category>   
</album>   
<album>
	<artist>Peter Tosh</artist>   
	<owner>Percy</owner>
   	<category>Reggae</category>  
</album>   
<album>
	<artist>Percy Gone Jazz</artist>   
	<owner>Percy</owner>
   	<category>Reggae</category>   
</album>   

Yes Percy (owner) is repeated and so is the category, but it makes it a
little easier to add another album to your file:
<album>
	<artist>Napalm Death</artist>   
	<owner>Joel</owner>
   	<category>Ballads</category>   
</album> 

Hope this helps.

Joel


> -----Original Message-----
> From: P0R0NG [mailto:p0r0ng@yahoo.com]
> Sent: Friday, February 01, 2002 8:29 AM
> To: beginners@perl.org
> Cc: Hanson, Robert
> Subject: Re: PERL and XML Parser
> 
> 
> oh yes thanks for that! thanks. i overlooked that. my big...
> 
> anyways, here's the correct xml version:
> 
> <? xml version="1.0" standalone="yes" ?>
> <albums>
>   <owner>Percy</owner>
>   <category name ="rock">
>     <artist>Alice in Chains</artist>
>     <artist>The Pixies</artist>
>     <artist>Percy and the Test Tube Babies</artist>
>   </category>  
>   <category name = "reggae">
>     <artist>Bob Marley</artist>
>     <artist>Peter Tosh</artist>
>     <artist>Percy Gone Jazz</artist>
>   </category>  
> </albums>
> 
> in using xml parser, how can i get the content of element 'owner'? i
> created the code but every content between the xml elements we parsed.
> here's my code:
> 
> #! /usr/local/bin/perl
> 
> use XML::Parser;
> my $parser = new XML::Parser ();
> 
> $parser->setHandlers (Start => \&Start_handler,
>                       End => \&End_handler,
>                       Default => \&Default_handler
>                      );
> 
> my $filename = shift;
> die "Can't find '$filename': $!\n" unless -f $filename;
> 
> $parser->parsefile ($filename);
> 
> sub Start_handler {
>   my $p  = shift;
>   my $el = shift;
> 
>   if ($el =~ m/owner/g) {print "<$el>"};
> }
> 
> sub End_handler {
>   my ($p,$el) = @_;
>   if ($el =~ m/owner/g) { print "</$el>\n"; };
> }
> 
> sub Default_handler {
>   my ($p,$str) = @_;
>   # my $p = shift;
>   # my $str = shift;
>   if (($str =~m/Percy/g) or ($str =~m/Percy/g)){ print "\n$str\n"; }
> }
> 
> On Fri, 1 Feb 2002 10:27:37 -0500 
> "Hanson, Robert" <RHanson@APTEGRITY.com> wrote:
> 
> |By the way, there were a lot of XML errors in that example.
> |
> |<categories="rock">
> |
> |You need an attribute name, this is not legal.
> |
> |<artist>Alice in Chains</rock>
> |
> |The closing tag does not match the opening tag.
> |
> |<categories = "reggae">
> |
> |You need an attribute name, this is not legal.
> |
> |Rob
> |
> |
> |-----Original Message-----
> |From: P0R0NG [mailto:p0r0ng@yahoo.com]
> |Sent: Friday, February 01, 2002 8:05 AM
> |To: beginners@perl.org
> |Subject: PERL and XML Parser
> |
> |
> |Hi list.
> |
> |I'm currently doing a perl project involving XML parser.
> |
> |given this xml snippet:
> |
> |<albums>
> |  <owner>Percy</owner>
> |  <categories="rock">
> |    <artist>Alice in Chains</rock>
> |    <artist>The Pixies</artist>
> |  </categories>  
> |  <categories = "reggae">
> |    <artist>Bob Marley</artist>
> |    <artist>Peter Tosh</artist>
> |  </categories>  
> |</albums>
> 
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
> 
> 
> -- 
> To unsubscribe, e-mail: beginners-unsubscribe@perl.org
> For additional commands, e-mail: beginners-help@perl.org
> 

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About