Использование SOAP :: Lite Я пытаюсь разобрать XML-ответ;однако SOAP :: SOM не дает мне желаемых значений. Кажется, он идет по другому пути, чем тот, который я пытаюсь найти.
#!/usr/bin/env perl
use strict;
use warnings;
use SOAP::Lite;
use Data::Dumper;
my $xml = <<'__XML__';
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<GetResponse>
<services>
<communication>
<ruleset>
<rule id="CD22222222">
<id>CD22222222</id>
<conditions>
<xtra>
<one id="sip:+22222222@ims">
<id>sip:+22222222@ims</id>
</one>
<one id="tel:+22222222">
<id>tel:+22222222</id>
</one>
</xtra>
</conditions>
<actions>
<allow>false</allow>
</actions>
</rule>
<rule id="CD33333333">
<id>CD33333333</id>
<conditions>
<xtra>
<one id="sip:+33333333@ims">
<id>sip:+33333333@ims</id>
</one>
<one id="tel:+33333333">
<id>tel:+33333333</id>
</one>
</xtra>
</conditions>
<actions>
<allow>false</allow>
</actions>
</rule>
</ruleset>
</communication>
<common-data>
<subscription-list>
<subscription id="PD11111111">
<id>PD11111111</id>
<number>11111111</number>
<key>alpha</key>
<default-subscription/>
</subscription>
<subscription id="CD22222222">
<id>CD22222222</id>
<number>22222222</number>
<key>beta</key>
</subscription>
<subscription id="CD33333333">
<id>CD33333333</id>
<number>33333333</number>
<key>gama</key>
</subscription>
</subscription-list>
</common-data>
</services>
</GetResponse>
</S:Body>
</S:Envelope>
__XML__
my $som = SOAP::Deserializer->deserialize($xml);
print Dumper($som->valueof('//services/common-data/subscription-list/'));
Я получаю значения для тех же идентификаторов, используя другой путь XML.
IВы хотите получить <key>
для оставшихся идентификаторов из запрошенного пути XML, например, beta
и gamma
.