我正在尝试列出存储桶中的所有元素(Amazon S3)。直到上个月,这个工作正常。现在抛出错误:
代码:
use Amazon::S3;
my $s3 = Amazon::S3->new({ aws_access_key_id => $aws_access_key_id,
aws_secret_access_key => $aws_secret_access_key,
retry => 1
}
);
my $bucket = $s3->bucket("mybucket");
$response = $bucket->list;
这会引发以下错误:
Character reference  refers to an illegal XML character () [Ln: 2, Col: 8456606880]
是否因为存储桶中的元素数量?它超过100k。
任何解决此问题的解决方案?
答案 0 :(得分:1)
虽然它不是一个完美的解决方案,但我只是在下面的perl模块中注释掉了两行,它运行良好。
/usr/local/share/perl5/XML/SAX/PurePerl.pm
评论行(387和388):
383 if ($data =~ /^#x([0-9a-fA-F]+);/) {
384 my $ref = $1;
385 $reader->move_along(length($ref) + 3);
386 my $char = chr_ref(hex($ref));
387 #$self->parser_error("Character reference &#$ref; refers to an illegal XML character ($char) 1", $reader)
388 # unless $char =~ /$SingleChar/o;
389 $self->characters({ Data => $char });
390 return 1;
391 }
不知道为什么它在以后工作得很好的时候必须瘫痪。