#!/usr/bin/perl -w # Copywrite Lincoln W. Kliman, www.jbadger.org 2002 # Use freely, must retain copywrite, # usage: # gpx2tb somefile.gpx use strict; #use XML::Filter::Sort; #use XML::SAX::Machines qw( :all ); use XML::DOM; use POSIX; #use Data::Dumper; #use Getopt::Long; my $file = $ARGV[0]; my $parser = XML::DOM::Parser->new(); my $doc = $parser->parsefile($file); my $linestring; #{ TYPE = 0, NAME, COMMENT, DATE, LAT, LON }; #count travel bugs in a cache. my $count = 0; # print Dumper($doc); foreach my $waypoint ($doc->getElementsByTagName('wpt')){ $count = 0; $linestring = ""; foreach my $travelbug ($waypoint->getElementsByTagName('groundspeak:cache')-> item(0) -> getElementsByTagName('groundspeak:travelbugs') -> item(0) -> getElementsByTagName('groundspeak:travelbug')) { if ($count == 0) { # first travel bug, print cache waypoint. $count++; print " ", $waypoint->getElementsByTagName('name')-> item(0) -> getFirstChild->getNodeValue, "\t"; } # print travel bug ID $linestring .= $travelbug -> getAttribute('ref'),"\t"; $linestring .= $travelbug -> getElementsByTagName('groundspeak:name') -> item(0) -> getFirstChild->getNodeValue, "\t\t"; } if ($count != 0) { #if printed something, new line. print $count." "linestring."\n"; } }