perl - "Not well-formed" error from XML::Simple -
i'm trying parse xml contains namespace xml::simple throwing error.
not well-formed (invalid token) @ line 3, column 53, byte 63
use data::dumper; use xml::simple; $string = q( <result> <something id="207" xlink:href="http://someurl.com&op=yeah">something 207</something> </result> ); print dumper(xmlin($string)); is there way can work xml::simple? or have use different xml parsing library?
please take note of warning in documentation xml::simple, reads follows:
the use of module in new code discouraged. other modules available provide more straightforward , consistent interfaces. in particular,
xml::libxmlhighly recommended ,xml::twigexcellent alternative.
xml documents may not contain ampersands & or angle brackets < > outside cdata sections. within ordinary (pdata) data sections , attribute values need replaced entities & < , > respectively
your program correct , data malformed. character 53 of line 3 here
<something id="207" xlink:href="http://someurl.com&op=yeah">something 207</something> ^ column 53 so reporting p (because &op isn't start of known entity) , problem nothing namespaces
my version of xml::simple (currently recent version 2.22) gives more explicit message
entity: line 3: parser error : entityref: expecting ';' <something id="207" xlink:href="http://someurl.com&op=yeah">something 207</somet ^
you can fix things replacing ampersand entity, this
use strict; use warnings 'all'; use data::dump; use xml::simple; $string = <<end_xml; <result> <something id="207" xlink:href="http://someurl.com&op=yeah">something 207</something> </result> end_xml dd xmlin($string); output
{ => { "content" => "something 207", "id" => 207, "xlink:href" => "http://someurl.com&op=yeah", }, }
Comments
Post a Comment