Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5273526
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: LINUX

2009-12-09 18:26:15

#!/usr/bin/perl

use strict;
use DBI;
use XML::Parser;

# create hash to hold values for expected column names
my %row = (
"key" => undef,
"name" => undef);

# connect to database and create parser object
my $dbh = DBI->connect ("DBI:mysql:ipmap",
"root", "passwd",
{ RaiseError => 1, PrintError => 0});
my $parser = new XML::Parser (
Handlers => {
Start => \&handle_start,
End => \&handle_end,
Char => \&handle_text
}
);

# parse file and disconnect
$parser->parsefile ("example.xml");
$dbh->disconnect ();

sub handle_start
{
my ($p, $tag) = @_; # parser, tag name

if ($tag eq "row")
{
foreach my $key (keys (%row))
{
$row{$key} = undef;
}
}
}

sub handle_text
{
my ($p, $data) = @_; # parser, text

my $tag = $p->current_element ();
$row{$tag} .= $data if exists ($row{$tag});
}

sub handle_end
{
my ($p, $tag) = @_; # parser, tag name

if ($tag eq "row")
{
my $str;
# construct column assignments for INSERT statement
foreach my $key (keys (%row))
{
$str .= "," if $str;
$str .= "$key=" . $dbh->quote($row{$key});
}
$dbh->do ("INSERT INTO ipmap SET $str");
}
}

阅读(1223) | 评论(0) | 转发(0) |
0

上一篇:GeoIP Perl API

下一篇:url 乱码显示问题

给主人留下些什么吧!~~