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


in reply to Error decoding XML

my $xml = '<hdsso><hpid>--------</hpid><pin>ab +cbs-hd</pin><fname>--------</fname><mname>&lt +;/mname><lname>-------</lname><dob>-------</d +ob><email>-------</email><ls>----------</ls&g +t;<ws>---------</ws></hdsso>';
The code above is not XML! Youn only have a string with basic entities.

If you want to use this 3rd part data, you can use the XML parser to fix the data as a content of an element, than use the content as a normal data input for another xml:

use XML::Smart ; my $bad_xml = '&lt;hdsso&gt;&lt;hpid&gt;--------&lt;/hpid&gt;&lt;pin +&gt;abcbs-hd&lt;/pin&gt;&lt;fname&gt;--------&lt;/fname&gt;&lt;mname& +gt;&lt;/mname&gt;&lt;lname&gt;-------&lt;/lname&gt;&lt;dob&gt;------- +&lt;/dob&gt;&lt;email&gt;-------&lt;/email&gt;&lt;ls&gt;----------&lt +;/ls&gt;&lt;ws&gt;---------&lt;/ws&gt;&lt;/hdsso&gt;'; my $xml_obj_fix = new XML::Smart( "<data>$bad_xml</data>" ,'html') ; + my $xml_obj_ok = new XML::Smart( $xml_obj_fix->{data} ,'html') ; print $xml_obj_ok->data ;
The output:
<?xml version="1.0" encoding="iso-8859-1" ?> <?meta name="GENERATOR" content="XML::Smart/1.6.9 Perl/5.006001 [MSWin +32]" ?> <root> <_1/> <hpid>--------</hpid> <pin>abcbs-hd</pin> <fname>--------</fname> <mname/> <lname>-------</lname> <dob>-------</dob> <email>-------</email> <ls>----------</ls> <ws>---------</ws> </root>
Enjoy!

Graciliano M. P.
"Creativity is the expression of liberty".