SOAP::Lite XML hash

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • daChf
    New Member
    • Mar 2008
    • 8

    SOAP::Lite XML hash

    I'm attempting to write an application using SOAP::Lite that receives XML code from a WebService. The XML code should look like the following:

    Code:
    <Message MessageID="12345" PageNumber="1" PageCount="1" MinRecord="1" MaxRecord="123">
      <Deliveries>
        <Delivery Attempts="1" CallCreditsUsed="1.00">
          <DeliveryStatus>Delivered to person</DeliveryStatus>
          <PhoneNumber>123-456-7890</PhoneNumber>
          <Name>John Smith</Name>
          <Delivered>02/06-2008 4:19 PM</Delivered>
          <TimeZone>CT</TimeZone>
        </Delivery>
      </Deliveries>
    </Message>
    What I'm getting is something similar to HASH(0x31a2484) . How can I access this data or even convert this into a string?

    Thanks in advance.
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    Originally posted by daChf
    I'm attempting to write an application using SOAP::Lite that receives XML code from a WebService. The XML code should look like the following:

    Code:
    <Message MessageID="12345" PageNumber="1" PageCount="1" MinRecord="1" MaxRecord="123">
      <Deliveries>
        <Delivery Attempts="1" CallCreditsUsed="1.00">
          <DeliveryStatus>Delivered to person</DeliveryStatus>
          <PhoneNumber>123-456-7890</PhoneNumber>
          <Name>John Smith</Name>
          <Delivered>02/06-2008 4:19 PM</Delivered>
          <TimeZone>CT</TimeZone>
        </Delivery>
      </Deliveries>
    </Message>
    What I'm getting is something similar to HASH(0x31a2484) . How can I access this data or even convert this into a string?

    Thanks in advance.
    Well, for us to better help you, we are going to have to see your code. Can you please share it here and someone will hopefully have some fairly useful input for you.

    Regards,

    Jeff

    Comment

    • daChf
      New Member
      • Mar 2008
      • 8

      #3
      Code:
      my $returned = $server
        ->call(SOAP::Data->name('RetrieveMessageReportDetails')->attr({xmlns => 'https://www.onecallnow.com/WebService/'}) =>
         SOAP::Data->name('LoginToken')->value($loginToken)->type('s:string'),
         SOAP::Data->name('MessageID')->value($messageID)->type('s:int'),
         SOAP::Data->name('PageNumber')->value($pageNumber)->type('s:int')
        );
      
      my $xml = $returned->result;
      
      print "$xml\n";
      This displays the HASH.

      Comment

      • SeniorSE
        New Member
        • Mar 2008
        • 3

        #4
        Originally posted by daChf
        Code:
        my $returned = $server
          ->call(SOAP::Data->name('RetrieveMessageReportDetails')->attr({xmlns => 'https://www.onecallnow.com/WebService/'}) =>
           SOAP::Data->name('LoginToken')->value($loginToken)->type('s:string'),
           SOAP::Data->name('MessageID')->value($messageID)->type('s:int'),
           SOAP::Data->name('PageNumber')->value($pageNumber)->type('s:int')
          );
        
        my $xml = $returned->result;
        
        print "$xml\n";
        This displays the HASH.
        You could use something like the following code to get at the data:

        Code:
        ...
        @items = $xml->valueof('//Message/Deliveries/Delivery');
        
        foreach my $item (@items) {
          print "Delivery to: $item->{'DeliveryName']";
          print "Delivery Status is: $item->{'DeliveryStatus']";
        };
        ...
        I might be a little off in the 'valueof' statement, based on your XML. But, it worked for me using SOAP::LIte. If you would like to exchange some scripts, let me know. I've got a few that use SOAP::Lite with Perl. I can also give you the result XML, so you know what the script is getting at.

        Good luck!

        Mark

        Comment

        • daChf
          New Member
          • Mar 2008
          • 8

          #5
          Thanks for the reply.

          However, when I tried it it said that it couldn't call method "valueof" on an unblessed reference. Does this mean that I have to create some sort of object class?

          Comment

          Working...