in reply to Re: Perl XML parsing with XML::Simple - Having problem with accessing fields
in thread Perl XML parsing with XML::Simple - Having problem with accessing fields

Thank you for your quick reply. But I am not able to access $var1 as a variable since it is not really in my script. My original script is this:
use XML::Simple; # qw(:strict); use Data::Dumper; my $simple = XML::Simple->new(); my $config = $simple->XMLin('/home/parse3.xml'); print $config; print $config->{Data1}->{Data2}->{DATE}, ".\n";
Before I was using Data dumper, so it would dump it all out as $VAR1. So my question is how do I access the date field with or without data dumper? Thanks again. I really appreciate your help!
  • Comment on Re^2: Perl XML parsing with XML::Simple - Having problem with accessing fields
  • Download Code

Replies are listed 'Best First'.
Re^3: Perl XML parsing with XML::Simple - Having problem with accessing fields
by Mr. Muskrat (Canon) on Aug 17, 2012 at 18:21 UTC

    Since you didn't provide your actual XML, I had to dummy some up based on the dump you provided.

    <root> <Data1> <TIMESTAMP>2012-08-04T20:15:04.506-04:00</TIMESTAMP> <Data2> <DATE>2000-10-19</DATE> <ID>A95</ID> <STATUS>A</STATUS> <TIME></TIME> </Data2> </Data1> </root>

    Using a slightly modified version of your script, I'm able to print the date.

    use strict; use warnings; use XML::Simple; # qw(:strict); use Data::Dumper; my $simple = XML::Simple->new(); my $config = $simple->XMLin('parse3.xml'); # /home/parse3.xml isn't va +lid on my system #print Dumper( $config ); # Uncomment to get a dump of the data struct +ure print $config->{Data1}->{Data2}->{DATE}, ".\n"; __END__ Output: 2000-10-19.
      Thank you for your answer. This is exactly what I tried and I am still not getting anything as my output. One thing I realized is the first field that I am trying to access is "DATE-NOW" and I simply changed the code to
      print $config->{Data1}->{Data2}->{DATE-NOW}, ".\n";
      I am still not getting any output. I installed this XML::Simple module yesterday on my linux and I remember when I was installing this module, it did come up as a warning that I needed XML::SAX and XML::SAX::Expat but it wasn't required and installation still was successful. Could that be the reason for this happening? I appreciate your help. Thanks a lot!

        vparikh:

        It sounds like the example data you gave us isn't the same thing as what you're running against. I'd suggest dumping the $config data structure just before printing the item of interest. That way, you'll be able to see where you're getting hung up.

        ...roboticus

        When your only tool is a hammer, all problems look like your thumb.

        Apparently, the XML doesn't match up to the dump you provided. Add the following before the line where you are trying to print the date so that you can see what the parser thinks the XML looks like.

        print Dumper( $config );

        If you still can't figure it out, provide the XML from /home/parse3.xml.

Re^3: Perl XML parsing with XML::Simple - Having problem with accessing fields
by roboticus (Chancellor) on Aug 17, 2012 at 18:36 UTC

    vparikh:

    The same way, just use your variable name ($config) instead of $VAR1 in your code. I used $VAR1 because I just used the data structure from your post and wanted to minimize changes so you could see how to do it.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.