XML:
<!CDATA[ Test tittel ]> - <!CDATA[ test ingres ]> - <![CDATA[ http://w +ww.test.com/test ]]>
PERL:
#!/usr/bin/perl # This script retrives an xml formatted news feed document and # generates a HTML file based on a tamplate file # # Format of the input should be: # Some article # Some Title # Some text # Some url # # # Modify vars in the config part to match your environment # # asbjorn@linux-directory.com, Oct. 2000 # ###### CONFIG START # Input format $article_del = "artikle"; $title_del = "tittle"; $url_del = "url"; $ing_del = "ingress"; # Input format end $template = "../../xml/test/test.txt"; ### Template HTML file. $html = "../../xml/test/test.html"; ### Name & path of HTML file to be generated $weburl = "http://www.test.com/xml/test.xml"; ### URL of document to be retrived $maxarticles = 1; ### Max no. of articles to be buildt. Must match template file $cgi = 1; ### Set if the script is to be run from a browser ### ### CONFIG END ### # MODULES USED use HTTP::Request; use LWP::UserAgent; use CGI; #### MODULES END $q=new CGI; print $q->header() if ( $cgi ); print $q->h3("$ver") if ( $cgi ); print "Henter $weburl"; print " " if ( $cgi ); $ua = LWP::UserAgent->new; $request = HTTP::Request->new(GET => "$weburl"); $response = $ua->request($request); %hash = %{$response}; $content = $hash{_content}; $msg = $hash{_msg}; if ( $msg ne "OK" ) { print "Could not contact web server!\n"; exit 2; } print "Fetched $weburl\n"; print " " if ( $cgi ); open(IN,"$template") || die "Failed to open $template: $!\n"; open(OUT,">$template.tmp") || die "Failed to write to $template.txt: $ +!\n"; while() { print OUT; } close(OUT); close(IN); print "Generating HTML file:\n"; print " " if ( $cgi ); @art = split m#(<$article_del>|)#, $content; shift @art; pop @art; foreach $art ( @art ) { ($title) = $art =~ m#<$title_del>(.*)#; ($ingress) = $art =~ m#<$ing_del>(.*)#; ($url) = $art =~ m#<$url_del>(.*)#; ($url) = $url =~ m##; $i++ if $title; last if ( $i > $maxarticles ); &writefile($i,"title",$title) if ( $title ); &writefile($i,"ingress",$ingress) if ( $ingress ); &writefile($i,"url",$url) if ( $url ); } rename("$template.tmp","$html") || die "Failed to write $html: $!\n"; print " ----: DONE :----"; sub writefile { my $num = shift; my $type = shift; my $text = shift; $st = "URL_$num" if ( $type eq "url" ); $st = "TITTEL_$num" if ( $type eq "title" ); $st = "INGRESS_$num" if ( $type eq "ingress" ); open(IN,"$template.tmp") || die "Failed to open $template: $!\n"; @in = <IN>; close (IN); open(OUT,">$template.tmp") || die "Could not write to $html: $!\n"; foreach ( @in ) { s/$st/$text/g; print OUT; } close(OUT); }
2001-03-03 Edit by Corion : Recreated node from broken linefeeds. Hope I didn't break anything.
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |