http://www.perlmonks.org?node_id=178336


in reply to Re: easy way of parsing XML
in thread easy way of parsing XML

XML::Simple tries to provide a simple interface but it does assume a knowledge of Perl references. I recommend perlreftut.

The most common mistake with XML::Simple is to ignore the advice in the docs about the ForceArray and KeyAttr options. Always set ForceArray => 1 if you're not sure, and setting it to an array of element names is probably the best way.

I also recommend setting KeyAttr => [] unless you know what you want. In the case of the original XML snippet, KeyAttr =>  'DlrItemNum' might be useful.

I suspect the line that says if ( ref $thing eq "SCALER" ); will never get executed.

If you're processing big XML files, XML::SAX might be a good answer. XML::SAX::ByRecord from Barrie Slaymaker's XML::SAX::Machines could be very handy once you have your head around SAX.

But, XML::Twig is possibly the best answer for simple record oriented processing.

Edit: Sorry, I typed 'always set ForceArray => 0 ...' when I meant 'ForceArray => 1 ...'