2014-10-28 111 views
1

我使用RPC :: XML并使用下面的代码和请求xml解析请求xml。Perl如何从保佑对象请求数据中获取值

use RPC::XML::ParserFactory 'XML::Parser'; 
my $P = RPC::XML::ParserFactory->new(); 
my $parse_data = $P->parse($xml_data); 
print Dumper($parse_data); 

请求XML:

<methodCall> 
<methodName>get_topic</methodName> 
<params> 
<param> 
<value> 
<string>163397</string> 
</value> 
</param> 
<param> 
<value> 
<i4>0</i4> 
</value> 
</param> 
<param> 
<value> 
<i4>19</i4> 
</value> 
</param> 
<param> 
<value> 
<string>ANN</string> 
</value> 
</param> 
</params> 
</methodCall> 

我得到的对象数据:

bless({ 
'name' => 'get_topic', 
'args' => [ 
      bless(do{\\(my $o = '163397')}, 'RPC::XML::string'), 
      bless(do{\\(my $o = '0')}, 'RPC::XML::i4'), 
      bless(do{\\(my $o = '19')}, 'RPC::XML::i4'), 
      bless(do{\\(my $o = 'ANN')}, 'RPC::XML::string') 
      ] 
}, 'RPC::XML::request'); 

后,我已经做了print Dumper($parse_data->args);并获得以下参数对象的数据:

祝福( {

$VAR1 = [ 
     bless(do{\\(my $o = '163397')}, 'RPC::XML::string'), 
     bless(do{\\(my $o = '0')}, 'RPC::XML::i4'), 
     bless(do{\\(my $o = '19')}, 'RPC::XML::i4'), 
     bless(do{\\(my $o = 'ANN')}, 'RPC::XML::string') 
     ]; 

现在如何从这个args对象数据中获取值?请帮忙!

回答

3

未经检验的,但根据the documentation这应该工作:

my $args = $parse_data->args; 
for my $arg (@$args) { 
    print $arg->type, ": ", $arg->value, "\n"; 
} 

尤其是阅读Message Classes文档这解释的RPC::XML::requestData Classes这也解释了RPC::XML::string和朋友的方法。

+0

谢谢!这个对我有用。 – Laeeq 2014-10-28 09:20:43