1
我對Perl完全陌生,我需要創建一個將使用SOAP Webservice的工具,並且需要將此WS提供的XML保存在輸出文件中。在這一點上,我可以使用web服務並將其保存爲散列數據,但我需要它是XML格式。如何使用Perl打印由SOAP Webservice提供的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();
正如我有一絲全上,我可以看到XML在執行我的計劃是,Web服務在控制檯中提供,但是,當它被印刷在輸出文件中,我看到的散列作爲在Perl所定義,與對鍵=>值的,有組織的一樣,如果它是一個JSON:
{
Docs => {
AssetDefinition => "AccountNumber",
BatchId => 1,
Doc => [
{
AssetDefinitionId => "CNTR0016716",
DateForRetention => "",
FileName => "",
FilePath => "",
SequenceNumber => "",
},
],
},
}
的數據是完全正確的,但我需要將它作爲XML保存在文件中,在這一點上,我認爲我會進入錯誤的目錄撓度。
任何幫助將相當讚賞。
感謝和問候,
費利佩
金,感謝,這和預期一樣更多的控制權!我已將print $輸出行更改爲: print $ output XMLout(\%keyHash,KeyAttr => [],RootName =>'response'); 現在我有output.xml填充XML,但我仍然有一個問題,也許你可以幫助我,如何輸出,而不是: <督AssetDefinitionId =」 CNTR0016716" ... /> ... 是這樣的: 賬戶號碼 AssetDefinition> ... \t < AssetDefinitionId> CNTR0016716 AssetDefinitionId> \t ... ... Txs! –
2014-10-29 11:40:31
嘿,從來沒有想過我以前的評論,我只是發現我只需要將選項NoAttr => 1添加到XMLOut();然後XML輸出按我的預期工作 - 謝謝! – 2014-10-29 17:15:02