Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
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
Replies are listed 'Best First'.
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 taking refuge in the Monastery: (13)
As of 2015-07-30 12:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls