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
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|