1

私はRPC::XMLを使用しており、以下のコードとリクエストxmlを使用してリクエストxmlを解析しています。

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);実行して 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 オブジェクト データから値を取得するにはどうすればよいでしょうか。助けてください!

4

1 に答える 1

3

テストされていませんが、ドキュメントによると、これは機能するはずです:

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

特に、メソッドを説明しているメッセージ クラスRPC::XML::requestのドキュメントと、説明しているデータ クラスを読んでくださいRPC::XML::string

于 2014-10-28T08:02:12.357 に答える