What you get in cleaned_data can double as an open file handle from
which you can directly start reading:
xml_file = cleaned_data.get('xml_file')
value = xml_file.read()
# Do whatever validation you need on value
xml_file.seek(0) # Reset the file to the beginning as you found it.
Obviously, for larger files, you should read and process the data in
smaller
chunks instead of the above xml_file.read().
There's more info here:
http://docs.djangoproject.com/en/dev/topics/http/file-uploads/#handling-uploaded-files
-Rajesh D