Am Tuesday 31 March 2009 07:08:34 schrieb Jan Tappenbeck: > Hi ! > > ich versuche langsam den Einstieg in Perl. Da das OSM-Datenformat > xml-basiert ist suche ich ein einfaches Einsteigerbeispiel für die > Datenfilterung einer Datei. Z.B. alle shop=butcher in der Datei. > > Hat einer von Euch ein solches zur Hand und kann es mir zur Verfügung > stellen ? ungefähr so (hab das aus einer bestehende Datei herausgeschnitten)?
#!/usr/bin/perl -w use XML::Parser; sub anfang { ($wert_des_zeigers,$starttag,%hash) = @_; if ($starttag eq "node") { $id=$hash{"id"}; $lat=$hash{"lat"}; $lon=$hash{"lon"}; $type="node"; } elsif ($starttag eq "tag") { $k=$hash{"k"}; $v=$hash{"v"}; if (($k eq "shop") and ($v eq "buttcher")) { print "$lat $lon\n"; } } elsif ($starttag eq "way") { $id=$hash{"id"}; $type="way"; $lat=""; } elsif ($starttag eq "nd") { $ref=$hash{"ref"}; if (($lat eq "") and (defined($lath{$ref}))) { $lat=$lath{$ref}; $lon=$lonh{$ref}; } push @nodes,$ref; } sub ende { ($wert_des_zeigers,$endtag) = @_; } sub inhalt { ($wert_des_zeigers,$inhalt)=...@_; #print " $inhalt"; } my $zeiger = new XML::Parser (); $zeiger->setHandlers (Start => \&anfang,End => \&ende,Char=>\&inhalt ); $zeiger->parsefile ("Datei.osm"); Gruß Sven > Gruß Jan :-) BTW: Bitte lass doch den Inflationären Gebrauch von Simlies, das führt dazu das ich dich manchmal nicht ernst nehme. _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de