I got an error recently after modifying a script I wrote to parse XML from juniper router commands. The change was to run a different show command that produces more information. The problem is that routers are apparently bad at XML and this caused the mal-formatted XML I'm used to to turn into invalid XML. Will post more code if required but It worked pretty well before the invalid characters. I put in a regex to remove the invalid character, but I was curious if there was a way to do this automatically. Or at least another module that provides better error handling.
Here's the error:
reference to invalid character number at line 1, column 1373, byte 1373 at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/XML/Parser.pm line 187
Any advice would be helpful. Some clue as to how to zero in on line 1, column 1373, byte 1373 of a file would be helpful as well.
my $xml = new XML::Simple (KeyAttr=>);
my $data = $xml->XMLin("cmd-out\/$hostname.xml");