in reply to Re: Re: XML::Simple parsing :-(
in thread XML::Simple parsing :-(

Please read the documentation on XML::Simple, hm? Save us all a lot of time. It's a good module if you know how to use it.

According to that documentation, you probably want the ForceArray option:

    my $ref = $xs->XMLin($doc, ForceArray => [ 'incident' ]);

PS: You don't need quotes on $doc when you're passing it to the subroutine.

    -- Chip Salzenberg, Free-Floating Agent of Chaos

Replies are listed 'Best First'.
Re: Re: Re: Re: XML::Simple parsing :-(
by st4k (Novice) on Jun 20, 2003 at 00:12 UTC
    Believe me I read the documentation before I post here. Its usually my last resort when I have to ask someone.
    Force array option doesnt do what I expected it to do. It just makes arrays out of the elements below the GDOT-INC-252421 portions of the tag. I have read the documentation and have used that option as well as the keeproot option just dont quite get why its not doing what I expected it to do.
      my $ref = $xs->XMLin($doc, ForceArray => [ 'incident' ]); works if the 'id' attribute is removed from the Incident start tag. Changing the name to 'iid' also works.

      Adding KeyAttr => [ ] to the options fixes this. From the doc for XML::Simple:
      Note 1: The default value for 'KeyAttr' is ['name', 'key', 'id']. If you do not want folding on input or unfolding on output you must setting this option to an empty list to disable the feature. Note 2: If you wish to use this option, you should also enable the `ForceArray' option. Without 'ForceArray', a single nested element will be rolled up into a scalar rather than an array and therefore will not be folded (since only arrays get folded).