On 29 Mar 2007 at 12:39, Beginner wrote:
> Hi,
>
> I might be in above my head here so bear with me if I am not making
> sense.
>
> I have to retrieve and extract an xml fragment from a REST server. I
> have followed some examples from the "Web Services" book. I am able
> to retrieve the data via LWP::UserAgent but I am baffled by the hash
> ref that's returned. Data::Dumper prints it as this (excuse the
> formatting) :
>
> $VAR1 = bless( {
> '_protocol' => 'HTTP/1.1',
> '_content' => '<address id="1029">
> <addressLine1>YORK</addressLine1>
> <addressLine2>W1T 6RF</addressLine2>
> <addressLine3></addressLine3>
> <addressLine4></addressLine4>
> <addressLine5></addressLine5>
> <country id="227"/>
> <postcode>W1T 6RF</postcode>
> </address>',
> '_rc' => 200,
> '_headers' => bless( {
> 'client-date' => 'Thu, 29 Mar
> 2007 11:20:51 GMT',
> 'content-type' => 'text/xml',
> 'client-response-num' => 1,
> 'client-peer' =>
> '127.0.0.1:8182',
> 'content-length' => '256',
> 'server' => 'Restlet-
> Engine/1.0b14'
> }, 'HTTP::Headers' ),
> '_msg' => 'The request has succeeded',
> '_request' => bless( {
> '_content' => '',
> '_uri' => bless( do{\(my $o =
> 'http://localhost:8182/core/address/1029')}, 'URI::http' ),
> '_headers' => bless( {
> 'user-
> agent' => 'libwww-perl/5.803'
> },
> 'HTTP::Headers' ),
> '_method' => 'GET'
> }, 'HTTP::Request' )
> }, 'HTTP::Response' );
>
>
> I am not sure who I am work with the data. The bless reference means
> I have just stepped into the murky workd of OO perl. The data I am
> after is the address xml fragment at the top.
>
> Can anyone offer me any tips to get me started? How do I reference
> the 'Object' at the top of the response? Is there a module that will
> help 'deserialize' the response?
My mistake. The examples in the books show how to do that. Basically
pass SOAP::Deserializer the content returned by LWP and it will do
all the heavy lifting for you...phew.
so
my $fragment = parse($res->content);
print $fragment->{'some_tag_value'}, "\n";
sub parse {
use SOAP::Lite;
return SOAP::Custom::XML::Deserializer->deserialize(shift)->root;
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/