omegaweaponZ has asked for the wisdom of the Perl Monks concerning the following question:

I have a very odd occurence that is happening and I need someone to point me in the right direction. Please keep in mind this happens RANDOMLY! I cannot determine why this is only happening at some times and not others. I am parsing through an XML feed using XML::LibXML. Generally there are no issues but on random occassion I get the following error:
parser error : Document is empty parser error : Start tag expected, '<' not found
Now clearly, the document is fine since it works on occassion, but does anyone have any ideas to prevent this? My initial thoughts are somehow write the contents out locally then parse through again? Here is the basic parser code. Please note, the recover silent option does not work, I'm only adding this to showcase this. Omitting or including this has the same result:
use XML::LibXML; my $parser = XML::LibXML->new(); $parser->recover_silently(2); my $dom = XML::LibXML->load_xml(location => $xmlurl);

Replies are listed 'Best First'.
Re: XML::LibXML Issue
by runrig (Abbot) on Aug 16, 2013 at 16:29 UTC
    Perhaps http occasionally fails to fetch content? What you might want to do is eval in a loop (add some limit to the loop at your discretion):
    my $dom; while (1) { $dom = eval{ XML::LibXML->load_xml(location => $xmlurl) }; last if $dom; print "Error getting xml-will retry: $@\n"; sleep 5; }
      Interesting suggestion. It is possible the page has not executed the xml entirely yet and the parser jumps the gun attempting to parse

        It is possible the page has not executed the xml entirely yet and the parser jumps the gun attempting to parse

        No. Incomplete download (http response) can happen, but its very doubtful that libxml jumps the gun at any point and causes the apperance of incomplete download