#!/usr/bin/perl $|++; use CGI::Carp qw(fatalsToBrowser); use strict; use XML::Parser; use LWP::UserAgent; use HTTP::Status; print "Content-Type: text/html; charset=UTF-8\n\n"; my $tag = ""; my $xmlcontent = ""; my $html = ""; my $title = ""; my $description = ""; my $address1 = ""; my $address2 = ""; my $address3 = ""; my $town = ""; my $count = 0; my $ua = new LWP::UserAgent; $ua->agent('Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'); $ua->timeout(30); my $req = new HTTP::Request( GET => 'http://www.sourcesite.com'); $req->header('Accept' => 'text/xml'); my $rdffile = $ua->request($req); open(WRITECSV,">/path/to/site/output.csv") || die "Cant write: $!"; if ($rdffile->is_success) { $xmlcontent = $rdffile->content; my $parser=new XML::Parser(Style=>'Stream'); $parser->setHandlers ( Start => \&startElement, End => \&endElement, Char => \&characterData); $parser->parsestring($xmlcontent); } else { print "No data available"; } sub startElement { my($parseinst, $element, %attrs) = @_; $tag = ""; SWITCH: { if ($element eq "title") { $tag = "title"; last SWITCH; } if ($element eq "description") { $tag = "description"; last SWITCH; } if ($element eq "address1") { $tag = "address1"; last SWITCH; } if ($element eq "address2") { $tag = "address2"; last SWITCH; } if ($element eq "address3") { $tag = "address3"; last SWITCH; } if ($element eq "town") { $tag = "town"; last SWITCH; } } } sub endElement { my($parseinst, $element, %attrs) = @_; $tag =""; $title =~ s/^\s+//g; $description =~ s/^\s+//g; $address1 =~ s/^\s+//g; $address2 =~ s/^\s+//g; $address3 =~ s/^\s+//g; $town =~ s/^\s+//g; $title =~ s/^\s+//g; $description =~ s/^\s+//g; $address1 =~ s/^\s+//g; $address2 =~ s/^\s+//g; $address3 =~ s/^\s+//g; $town =~ s/^\s+//g; my ($dd,$mm,$yyyy) = split /\//, $StartDate; $StartDate = qq{$yyyy-$mm-$dd}; $StartDate =~ s|^\-+||sig; my ($dd,$mm,$yyyy) = split /\//, $EndDate; $EndDate = qq{$yyyy-$mm-$dd}; $EndDate =~ s|^\-+||sig; SWITCH: { if ($element eq "siteID") { $html = qq{$title|$description|$address1|$address2|$address3|$town \n}; if (!$title) { next; } print WRITECSV $html; print "Added $title \n"; $html = ""; last SWITCH; } } } sub characterData { my($parseinst, $data) = @_; $data =~ s/{amp}/&/; if ($tag eq "title") { $E_title = $data; } if ($tag eq "description") { $E_description = $data; } if ($tag eq "address1") { $address1 = $data; } if ($tag eq "address2") { $address2 = $data; } if ($tag eq "address3") { $address3 = $data; } if ($tag eq "town") { $town = $data; } # Always end with a 1. 1;