我对 Perl 完全陌生,我需要创建一个使用 SOAP Web 服务的工具,我需要将此 WS 提供的 XML 保存在输出文件中。此时我可以使用 web 服务并将其保存为哈希数据,但我需要它是 XML 格式。
我的代码非常简单,如下所示:
#!/usr/bin/perl -w
use SOAP::Lite ( +trace => "all", maptype => {} );
use IO::File;
use Data::Dump "pp";
sub SOAP::Transport::HTTP::Client::get_basic_credentials {
return 'username' => 'password';
}
my $soap = SOAP::Lite
-> proxy('https://.../WebService.do?SOAP', ssl_opts => [ SSL_verify_mode => 0 ] );
my $method = SOAP::Data->name('execute') -> attr({xmlns => 'http://.../'});
my $output = IO::File->new(">output.xml");
my %keyHash = %{ $soap->call($method)->body};
print $output pp({%keyHash});
$output->close();
由于跟踪已满,我可以在执行程序时在控制台中看到 Web 服务提供的 XML,但是,当它在输出文件中打印时,我看到 Perl 中定义的散列,其中包含键 => 值,就像它是一个 json 一样组织:
{
Docs => {
AssetDefinition => "AccountNumber",
BatchId => 1,
Doc => [
{
AssetDefinitionId => "CNTR0016716",
DateForRetention => "",
FileName => "",
FilePath => "",
SequenceNumber => "",
},
],
},
}
数据完全正确,但我需要将它作为 XML 保存在文件中,此时我认为我走错了方向。
任何帮助将不胜感激。
谢谢并恭祝安康,
费利佩