Hi Ben,
It depends a lot of what you want, but if you want to upload an XML and do directly something with it, then I agree with Brenden to build an custom form control.
And is it necesary to upload the XML? Why not directly use it in memory.
Like described here in Reading the xml file in server without saving it.
You can also save the file on an temp location and then save the XML in de database like described here : Saving an XML file using Fileupload. Don't forget to remove the temp file.
See here the documentation how to begin : Example - Developing custom form controls
Good luck and if you get stuck you know where to find the answers :-)
If this answer helped you, please vote for my answer :-)