Perl, как получить значения из данных запроса благословения объекта
Я использую 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? пожалуйста помоги!
1 ответ
Решение
Не проверено, но согласно документации это должно работать:
my $args = $parse_data->args;
for my $arg (@$args) {
print $arg->type, ": ", $arg->value, "\n";
}
В частности, прочитайте документацию по классам сообщений, в которой объясняются методы RPC::XML::request
и классы данных, которые объясняют RPC::XML::string
и друзья.