下面的代码是连接到一个.asmx web服务来获取数据。
代码将CDATA提取到下面的%keyHash中。
与其解析整个CDATA,还能通过调用SOAP的路径来获取SOAP CDATA中的特定数据元素吗?
我读到我可以用$soap->valueof()来获取数据,对吗?这需要使用XPATH吗?
我问,因为我不熟悉这一点,我不知道我是否走上了正确的道路,还有其他方法可以这样做吗?
我的$soap->值(‘//Image/Front’)尝试失败了,说我第一次使用XPATH可能弄错了,但此时我猜测这是否是正确的方法。
任何关于我在正确或错误的道路上使用valueof()的指示都将不胜感激!
这是代码,它有效。我还包括从%keyHash提取的模糊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>
谢谢,
一个
发布于 2014-08-12 17:16:42
我用下面的方法解决了这个问题,希望它能帮到某人.
use XML::Simple;
%keyhash = %{ $soap->call($method => @params)->body->{'GetCheckXmlResponse'}->{'GetCheckXmlResult'}};
$getxml= %keyhash->{Xml};
$parsexml = XMLin($getxml);
print Dumper($parsexml); # Use this to point to your data and then grab it as per the line below
$frontside = $parsexml->{Images}->{Front};
https://stackoverflow.com/questions/23164438
复制相似问题