我下面的代码连接到的.asmx Web服务来获取数据。
该代码extractes的CDATA到下面%keyHash。
而不是分析整个CDATA,才有可能通过调用了它的路径抢在SOAP CDATA特定的数据元素?
我读,我可以用$ soap->的valueOf()来获取数据,是正确的? 而这将需要使用XPath?
我问,因为我不熟悉这个,我不知道如果我在正确的道路上,是否有其他方法可以做到这一点?
我的$ soap->的valueOf(“//图片/前”)尝试都失败了,他说,使用XPATH我的第一次,可能是犯错,但在这一点上我猜,如果这是正确的道路要走。
关于我是否在使用的valueOf对错路径上的任何方向(),将不胜感激!
下面是代码,它的工作原理。 我也包括从%keyHash提取的obscurated CDATA数据。
use SOAP::Lite +trace => 'all';
$soap = SOAP::Lite
-> uri('..../')
-> on_action( sub { join '/', '.....', $_[1] } )
-> proxy('......asmx');
$method = SOAP::Data->name('methodName')
->attr({xmlns => ...../'});
@params = (
SOAP::Data->name(tran=> 765) ->type(''),
SOAP::Data->name(token => 0)->type(''),
SOAP::Data->name(type=> 1)->type('')
);
%keyHash = %{ $soap->call($method => @params)->body->{'GetmethodNameResponse'}->{'GetmethodNameResult'} };
# iterate through all fields and print them
foreach my $k (keys %keyHash) {
print "$k=$keyHash{$k}\n";
}
数据输出的例子,我想在字符串“THIS_IS_THE_DATA_I_WANT”的数据(这里无法把路径出于某种原因)
RequestResult=0
Xml=<?xml version="1.0" encoding="utf-8"?>
<Images>
<Front>THIS_IS_THE_DATA_I_WANT</Front>
</Images>
谢谢,
一种