Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

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=""> <s:Body> <ProcessSetupResponse xmlns="http://namespace1"> <ProcessSetupResult xmlns:a="http://namespace2" xmlns:i="http://www.w3"> <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',""); print "AuthStatus\t", $xp->getNodeText('//ProcessSetupResponse/Process +SetupResult/i:AuthenticatedStatus'), "\n"; print "AuthStatus\t", $xp->getNodeText('//ProcessSetupResponse/Process +SetupResult/a:AuthenticatedStatus'), "\n";


AuthStatus Y AuthStatus N

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.

        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?

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2022-09-30 05:42 GMT
Find Nodes?
    Voting Booth?
    I prefer my indexes to start at:

    Results (125 votes). Check out past polls.