Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: SOAP::Lite - READING Multiple namespaces

by olus (Curate)
on Mar 19, 2009 at 13:05 UTC ( #751705=note: print w/ replies, xml ) Need Help??


in reply to SOAP::Lite - READING Multiple namespaces

In the code below I took the XML you provided and added a new AuthenticatedStatus element with a different namespace for testing purposes. I'm feeding XML::XPath directly with that XML, but you can also save the response you get from the webservice and feed that file instead. Just change to my $xp = XML::XPath->new(filename => 'you_xml_file');

use strict; use warnings; use XML::XPath; my $stream = qq{ <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <ProcessSetupResponse xmlns="http://namespace1"> <ProcessSetupResult xmlns:a="http://namespace2" xmlns:i="http://www.w3 +.org/2001/XMLSchema-instance"> <a:AuthenticatedStatus>N</a:AuthenticatedStatus> <i:AuthenticatedStatus>Y</i:AuthenticatedStatus> <a:AuthenticatedWith>3-D Secure</a:AuthenticatedWith> ... </ProcessSetupResult> </ProcessSetupResponse> </s:Body> </s:Envelope> }; my $xp = XML::XPath->new(xml => $stream); $xp->set_namespace('a',"http://namespace2"); $xp->set_namespace('i',"http://www.w3.org/2001/XMLSchema-instance"); print "AuthStatus\t", $xp->getNodeText('//ProcessSetupResponse/Process +SetupResult/i:AuthenticatedStatus'), "\n"; print "AuthStatus\t", $xp->getNodeText('//ProcessSetupResponse/Process +SetupResult/a:AuthenticatedStatus'), "\n";

outputs

AuthStatus Y AuthStatus N


Comment on Re: SOAP::Lite - READING Multiple namespaces
Select or Download Code
Re^2: SOAP::Lite - READING Multiple namespaces
by DreamT (Pilgrim) on Mar 20, 2009 at 10:16 UTC
    Ok, thank you! That will do the trick.
    BUT, how do I get the webservice response to a file (or a variable) in the first place?
    (The XML file used in the example is dumped via traceall...)
    Usually, I operate on the result the following way:
    my $soapAnswer = $soapHanterare->call($setup => @setup_values); my $faultstring = $soapSvar->valueof('//faultstring');

    Sorry for all the stupid questions...but, see it this way, you're helping a former windows developer to the lovely world of Perl:-)

      check $soapAnswer->result. Dump it to see what you are dealing with.

        Hi,
        Unfortunately that gives me an empty value :-(
        I try to dump it but I get an empty string. How do I do it?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://751705]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2014-11-24 14:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (141 votes), past polls