我的代码是连接到.asmx网络服务以获取数据。
代码将CDATA提取到下面的%keyHash中。
不是解析整个CDATA,而是可以通过调用它的路径来获取SOAP CDATA中的特定数据元素吗?
我读过我可以使用$ soap-> valueof()来获取数据,这是正确的吗?而且这需要使用XPATH?
我问我不熟悉这个,我不知道我是否走在正确的道路上,还有其他办法吗?
我的$ soap-> valueof('// Images / 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>
谢谢,
A
答案 0 :(得分:0)
我通过使用以下内容解决了这个问题,希望它有助于某人...
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};