What did you do with the XML? What errors did you get?
The profile XML is like:
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
<applicationVisibilities>
<application>Guest</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>
...
</Profile>
And the Permission Set is like:
<?xml version="1.0" encoding="UTF-8"?>
<PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata">
<applicationVisibilities>
<application>Guest</application>
<visible>false</visible>
</applicationVisibilities>
...
</PermissionSet>
There are two differences in the example: the root node name (Profile/PermissionSet) and the default setting (you cannot set it in a Permission Set). Like the default setting, it will happen with other properties like in recordTypeVisibilities for instance.
There are thousand of permissions and settings in both, and in Permission Sets you can set permissions for a subset of components/properties than in Profiles (check this page: Profile vs. PermissionSet)
You said you already manipulated the XML file, but I wonder what you changed. I didn't test this but I think that if you get the XML of your Profile with all its settings, change the root node name to PermissionSet, delete all the settings that do not belong to Permission Sets like loginHours, layoutAssignments, applicationVisibilities/default, etc. (and here is the problem, the etc is big); package the file as a PermissionSet and deploy it, you will end up with two objects with the same name: a Profile and a Permission Set.
Even when you can do it, and convert a Profile to a Permission Set, I also wonder why and what are you trying to achieve with it.