OK, where should I start?
From the most generic, and probably the most useful, to the most specific:
- you will increase greatly the number of answers, you get, and their accuracy, if you give us more data to work with: usually people post a sample of data, and an extract of the code they wrote, plus the expected output and the exact error messages they get,
- then you should use the preview to make sure the message you posted displays properly, as it is I read (For eg. XML file has "&" for "&") where I guess you wanted (For eg. XML file has "&" for "&"),
- then you don't seem to know much about XML: you can't exect to change randomly the format of the input data and expect it to still be valid XML. You can get more information on XML at zvon.org, for example, or read a book or two about it. Learning XML or Perl & XML are 2 O'Reilly books that you might find useful too. Those &...; constructs are called entities, and they could be character entities (like   or Š), default entities like & or <, internal entities, external entities... there is more to it than just "weird characters that don't look good",
- also XML::Parser is probably not the module you should be using, XML::Simple or XML::LibXML are 2 examples of higher level modules that will make your life much easier than XML::Parser, look at the Module Reviews section for reviews of XML modules,
- finally, I believe that if you let XML::Parser, or any other XML module, read your initial XML file, provided it is really well-formed XML, you will be happily surprised by the data you get: the character entities should have been replaced and you should get what you wanted. Watch out for the encoding of the data though.