2012-06-07 24 views
0

使用SOAP我不能从SOAP响应简单的属性值::精简版。 下面是SOAP :: Data的代码和输出。我试图获得属性的值//响应/ dirn/attr/uuid我怎样才能从复杂的SOAP属性::数据结构SOAP ::精简版?

my $cm = new SOAP::Lite 
    uri => 'http://www.cisco.com/AXL/API/1.0', 
    proxy => "https://10.0.0.1:8443/axl/"; 

my $res = $cm->getPhone(
    SOAP::Data->name(phoneName => 'SEP00270D3D7A4C'), 
); 

for my $i ($res->valueof('//device/lines/line')) { 
    print Dumper($i); 
    #print $i->{dirn}->{attr}->{'uuid'}."\n"; # line below give me an error 
} 

这里是Data :: Dumper的输出。我实际上有要求的价值,但我无法通过SOAP获得::数据

$VAR1 = \bless({ 
'_signature' => [], 
'_value' => [ 
    bless({ 
    '_name' => 'dirn', 
    '_signature' => [], 
    '_value' => [ 
     '' 
    ], 
    '_prefix' => '', 
    '_attr' => { 
     'uuid' => '{615C3550-1EFD-56C7-3788-2AA8725880E3}' #!!!!!!!!!!!!!!!!!!!!!!!!!! 
    } 
    }, 'SOAP::Data'), 
], 
'_attr' => {} 
}, 'SOAP::Data'); 

我花了大约几个小时试图获得此属性值。我已经在考虑使用Data :: Dumper的输出来获得值快速和肮脏的破解。

在此先感谢

P.S:SOAP服务器是思科CUCM 6.1.5

回答

0
$$i->value->attr->{uuid} 
0
$i->{'_value'}[0]{'uuid'} 

我认为,虽然,我不知道的[0]。

0

我有同样的问题,但找不到一个“快速和容易”解决之道。我开发了一个Perl库模块来使用某些供应商的Web服务(WSDL)。我已经完成了许多这样的Web服务接口,但是直到现在 - 所有数据都以XML“元素”的形式返回。相反,这个特定的Web服务将大部分数据作为XML元素返回,但也设置了一些 - 作为XML属性。我无法返回属性值 - 因为SOAP ::数据的方法(的valueOf(),身体()等),只返回XML元素的值,而不是相关的属性。

这个问题是从一个前贴有一点不同 - 在我不知道前面正在被退回(给定Web服务提供了许多不同的方法,每一个 - 有不同的响应)的XML结构。

所以,问题是 - 它是如何可能获得XML数据的所有(包括元素和属性)的通用响应SOAP数据