XML : Understanding multi-level XML reference using Perl XML Parser?

I've been scouring the internet for 2 days now trying to find answers to how to proper reference a multi-level XML file using Perl XML Parsers. I'm a novice Perl guy and this is my first post to this forum, so I have much to learn. I'm starting with XML::Simple. I realize that some have preferences for other libraries.

XML Sample file:

  <events>      <event>          <EventObject>Application</EventObject>          <EventType>Start</EventType>          <Operation></Operation>          <EventTimestamp>Sat 11/21/2015-14:02:57.76</EventTimestamp>      </event>      <source>          <UserIPAddr>192.168.1.2</UserIPAddr>          <UserHostName>ABC-PROD-BAR-15-01A</UserHostName>          <UserUUID>EC2-User</UserUUID>      </source>      <target>          <URL>"https://foo.com/"</URL>      </target>      <payload>          <FormData></FormData>          <PackageFilename></PackageFilename>      </payload>        <event>          <EventObject>User</EventObject>          <EventType>Download</EventType>          <Operation>Acknowledge License</Operation>          <EventTimestamp>Sat 11/21/2015-14:03:10.44</EventTimestamp>      </event>      <source>          <UserIPAddr>10.120.30.4</UserIPAddr>          <UserHostName>WSM24CN502</UserHostName>          <UserUUID>simpson homer 750329 </UserUUID>      </source>      <target>          <URL>"https://dev.catalog.com/"</URL>      </target>      <payload>          <FormData></FormData>          <PackageFilename>"eclipse.luna.5.2.tag.gz"</PackageFilename>      </payload>  </events>    

Sample Code:

  #!perl    # use module  use XML::Simple;  use Data::Dumper;  use XML::Parser;    # create object  $xml = new XML::Simple (KeyAttr=>[]);    # read XML file  my $data = $xml->XMLin("auditfile3.xml",forcearray=>1);  #$data = $xml->XMLin("auditfile3.xml",KeyAttr=>{EventRecord=>'Event'});  print Dumper($data);    #print $data->{Events}->{Event};    #my $EventRecord = $data->{EventRecord};  #print Dumper($EventRecord);    #print $EventRecord->{EventObject};  #print $data->{EventObject};    # dereference hash ref  # access <EventRecord> array    foreach my $e (@{$data->{Event}})      {       print "EventObject: ",$e->{Event->{EventObject}}, "\n";       print "EventType:  ", $e->{EventType}, "\n";        print "Operation: ", $e->{Operation}, "\n";       print "Timestamp: ", $e->{EventTimestamp}, "\n";      }    

No comments:

Post a Comment