in reply to Re: Accessing Attributes in Web Servie message - Server Side
in thread Accessing Attributes in Web Servie message - Server Side

Here is my SOAP server:

#!/usr/bin/perl use strict; use SOAP::Transport::HTTP; use lib '/var/www/soap'; use vbsservice; my $server = SOAP::Transport::HTTP::CGI ->dispatch_to('sendMsg2ABC') ->handle; 1;

Here is the vbsservice module:

#!/usr/local/bin/perl package vbsservice; use Switch; use warnings; use Exporter; our @ISA = (Exporter); our @EXPORT = qw(sendMsg2ABC); sub sendMsg2ABC { my($class,$data)=@_; ...

$data is a hash ref that I've parsed all sorts of ways but I'm never able to get to the attributes of the incoming message. I can easily parse the key/values from any tag/element entries of the message but not the attributes. One thing I'm trying now is the dataof method but I haven't been able to get that to work. As a note, I cannot change the way the message is coming in. That's out of my control. Thank you again for any help.

Replies are listed 'Best First'.
Re^3: Accessing Attributes in Web Servie message - Server Side
by poj (Abbot) on Feb 18, 2016 at 16:34 UTC

    What is the structure of $data if you use Dumper

    use Data::Dumper; sub sendMsg2ABC { my($class,$data)=@_; print Dumper $data;
    poj

      Thank you. Even Dumper doesn't show me the attributes. I have Wireshark monitoring the incoming messages and there I do see the entire message coming in with the attributes. Here is the Dumper result:

      $VAR1 = { 'Request_Id' => '999999', 'Section' => [ { 'Entity' => [ '', '', '', '', '', '', '', '', '', '' ] }, { 'Entity' => [ '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] }, { 'Entity' => [ '', '', '', '' ] } ], 'RequestType' => 'CHANGE', 'RequestStatus' => 'PENDING', 'VtacContactPhone' => '555-555-5555', 'Action' => 'APPROVE', 'VtacContactName' => 'CYNTHIA', 'NegotiatorPhone' => '555-555-5555', 'IssuedDate' => '12/10/2015 09:29:02 AM', 'NegotiatorName' => 'MICHELLE' };

        If you want to parse the XML then XML::Twig is one option

        #!perl use strict; use warnings; use XML::Twig; use Data::Dumper; my $xml = do{local $/;<DATA>}; my %data=(); my $t = XML::Twig->new( twig_handlers=> { Section => \&section }, ); $t->parse($xml); print Dumper \%data; sub section { my ($t,$e) = @_; my $type = $e->att('type'); for ($e->children('Entity')){ push @{$data{$type}},$_->atts; } }; __DATA__
        poj

      Try looking at HTML::Tree