首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SOAP::Lite Response Hash中提取CDATA中的特定XML元素

从SOAP::Lite Response Hash中提取CDATA中的特定XML元素
EN

Stack Overflow用户
提问于 2014-04-19 00:41:16
回答 1查看 961关注 0票数 1

下面的代码是连接到一个.asmx web服务来获取数据。

代码将CDATA提取到下面的%keyHash中。

与其解析整个CDATA,还能通过调用SOAP的路径来获取SOAP CDATA中的特定数据元素吗?

我读到我可以用$soap->valueof()来获取数据,对吗?这需要使用XPATH吗?

我问,因为我不熟悉这一点,我不知道我是否走上了正确的道路,还有其他方法可以这样做吗?

我的$soap->值(‘//Image/Front’)尝试失败了,说我第一次使用XPATH可能弄错了,但此时我猜测这是否是正确的方法。

任何关于我在正确或错误的道路上使用valueof()的指示都将不胜感激!

这是代码,它有效。我还包括从%keyHash提取的模糊CDATA数据。

代码语言:javascript
运行
复制
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“中的数据(由于某种原因无法将路径放在这里)

代码语言:javascript
运行
复制
RequestResult=0
Xml=<?xml version="1.0" encoding="utf-8"?>
<Images>
    <Front>THIS_IS_THE_DATA_I_WANT</Front>
</Images>

谢谢,

一个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-12 17:16:42

我用下面的方法解决了这个问题,希望它能帮到某人.

代码语言:javascript
运行
复制
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}; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23164438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档