아래 코드는 .asmx 웹 서비스에 연결하여 데이터를 가져 오는 중입니다.SOAP에서 가져온 CDATA에서 특정 XML 요소 추출 :: Lite 응답 해시
코드는 CDATA를 아래의 % key 해시로 추출합니다.
전체 CDATA를 구문 분석하는 대신 SOAP CDATA의 특정 데이터 요소를 가져 와서 경로를 호출 할 수 있습니까?
나는 $ soap-> valueof()를 사용하여 데이터를 얻을 수 있다고 읽었는데, 맞습니까? 이것이 XPATH의 사용을 요구할 것인가?
나는이 사실에 익숙하지 않아서 내가 올바른 길을 가고 있는지 알지 못한다. 다른 방법이 있을까?
My $ 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>
가 감사 (어떤 이유로 여기에 경로를 넣어 불가능)
다음을 사용하여이 문제를 해결했습니다. 도움이되기를 바랍니다. XML :: Simple; % keyhash = % {$ soap-> call ($ method => @params) -> body -> { 'GetCheckXmlResponse'} -> { 'GetCheckXmlResult'}}}; $ getxml = % keyhash -> {Xml}; $ parsexml = XMLin ($ getxml); 인쇄 Dumper ($ parsexml); # 이것을 사용하여 데이터에 ppint 한 다음 아래 줄에 따라 그 내용을 가져옵니다. $ frontside = $ parsexml -> {Images} -> {Front}; – user2574678