Sooo, it's very frustrating... Just to check, I changed the encode of my file to UTF-8 and I couldn't visualize the characters properly. No wonder, that means the file was originally Latin1. I tried to change the encoding of the XML but it didn't work out.
I somehow solved the issue using utf8_encode() but then if I run htmlentities() on the resulting string it's giving the &tilde again. Maybe it works only for latin? Guess I didn't get something very important about character encoding.