|
|
|
#*****************************************************************#
# ALLGEMEIN: #
# SOAP in Datenbank importieren #
#*****************************************************************#
use strict;
use DBI;
use SOAP::MySOAP;
# Datenbankverbindung herstellen
my $dbh =
DBI->connect( "DBI:mysql:database", "username",
"password", { RaiseError => 1, PrintError => 0 } );
# Anfrage-XML schicken
$XML = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetCoordinates>
<objRequest>
<Language>DE</Language>
<Token>Geographytest</Token>
</objRequest>
</GetCoordinates>
</soap:Body>
</soap:Envelope>';
my $client = SOAP::MySOAP->new(http:/webservices.de/test.asmx?WSDL);
my $reply = $client->request($XML);
# Antwort-XML formatieren
$reply = &utf82ascii($reply);
$reply =~ s/></>\n</g;
# Anfwort-XML zerlegen
my $i = -1;
while ( $reply =~ s/<(.*)>(.*)<\/.*>// ) {
my $tag = $1;
my $data = $2;
if ( $tag eq "Name" ) { $i++; $NAME[$i] = $data; }
elsif ( $tag eq "Street" ) { $STR[$i] = $data; }
elsif ( $tag eq "City" ) { $ORT[$i] = $data; }
}
# Datensatz speichern
for ( my $j = 0 ; $j <= $i ; $j++ )
{ my $SQL = "INSERT INTO tabelle SET
name = $NAME ,
strasse = $STR
ort = $ORT ";
$dbh->do ( $SQL );
}
#*****************************************************************#
# Subroutinen #
# utf-8 codierung in ASCII ändern #
#*****************************************************************#
sub utf82ascii()
{
my $STRING = $_[0];
$STRING =~ s/([\xC0-\xC3])([\x80-\xBF])/
chr( (ord($1) & 3)*64 + (ord($2) & 63))/eg;
return $STRING;
}
|