0

SOAP::Liteを使用してSOAP応答から単純な属性値を取得できません。SOAP::Dataのコードと出力の下。属性の値を取得しようとしています//response/ dirn / attr / uuid

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::Dataを介してそれを取得できません

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

この属性値を取得するために約数時間を費やしました。Data :: Dumperの出力を使用して、高速でダーティなハックとして値を取得することをすでに考えています。

前もって感謝します

PS:SOAPサーバーはCiscoCUCM6.1.5です。

4

4 に答える 4

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

でも、[0]についてはよくわからないと思います。

于 2012-08-20T18:52:42.923 に答える
0

私は最近同じことを経験し、答えを見つけました。コメントセクションで私の質問と更新された答えを参照してください。 SOAP::Lite レスポンス ハッシュから取得した CDATA 内の特定の XML 要素を抽出する

于 2014-04-18T23:40:57.363 に答える
0
$$i->value->attr->{uuid}
于 2012-06-07T21:47:22.717 に答える
0

私は同じ問題を抱えていますが、それに対する「迅速かつ簡単な」解決策が見つかりません。特定のベンダーの Web サービス (WSDL) を使用する Perl ライブラリ モジュールを開発しました。私はそのような Web サービス インターフェイスを数多く作成してきましたが、これまではすべてのデータが XML の「要素」として返されていました。反対に、この特定の Web サービスは、ほとんどのデータを XML 要素として返しますが、一部を XML 属性として設定します。SOAP::Data メソッド (valueof()、body() など) は XML 要素の値のみを返し、関連する属性は返さないため、属性として返される値を取得できません。

この問題は、以前に投稿された問題とは少し異なります。つまり、返される XML 構造を前もって知らないという点です (Web サービスが多くの異なるメソッドを提供し、それぞれの応答が異なる場合)。

問題は、一般的な応答 SOAP データのすべての XML データ (要素と属性の両方) を取得する方法です。

于 2013-02-05T21:31:36.370 に答える