Guess it depends on precisely what is in those variables. If there's anything that disrupts the structure, that would blow it out of the water. Wrap them in cdata blocks to be sure.
The XML itself appears as well formed. Haven't a clue if its correct though.
If its fine for you, and its fine for me, than I'd suggest its where you're sending it that is tossing that error.
Curl wise, I guess that depends on what the server is doing. Its fine so long as they are pulling from the HTTP_RAW_POST_DATA. If they are not, than you will need to drop the content type as well as provide the input a fieldname in the post.
As of PHP 5.5, the MySQL library has been officially deprecated. It is recommended to move to either MySQLi or PDO libraries for your mysql connectivity. See here for help choosing which interface you prefer: http://php.net/manual/en/mysqlinfo.api.choosing.php