提问人:h q 提问时间:10/10/2019 更新时间:10/15/2019 访问量:225
使用 SOAP::Lite 解析 XML 响应
Parsing XML Response using SOAP::Lite
问:
使用 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 路径获取相同 ID 的值。
我想从请求的 XML 路径中获取其余 ID 的 ID,例如 和。<key>
beta
gamma
答:
1赞
Jack Fleeting
10/15/2019
#1
用于从元素中获取所有日期的 xpath 表达式:<number>
//services/common-data//subscription//number/text()
要仅从 which 中的元素中获取数据,请使用:<number>
<subscription-list>
<default-subscription/>
//services/common-data//subscription[.//child::*[name()='default-subscription']]//number/text()
评论
0赞
h q
2/24/2020
您能否提供一个工作示例来打印“alpha”、“beta”和“gamma”键?谢谢!
评论
<key>
CD22222222
CD33333333
<key>
<number>
communication
common-data
actions
id
rule
outputxml(1)
SOAP::Lite
XML::Twig
PD11111111