Remember any App Engine applications may have many copies running on many distinct machines on many datacenters. If you could write a file to the filesystem, the file would then have to be replicated consistently across all running instances and on every new instance created from that moment on.
You may use the blobstore (as Bugs pointed out, which can serve the file by itself without bothering your app), the datastore combined with memcache (this is usually fast enough), Google's Cloud Storage (which is very similar to Amazon's S3 and can also serve the files on its own) or even an external service (such as S3) you access via http.
You can generate the XML file on a string and store it. When someone hit your /myfile.xml
, all you need to do is to read it back (from wherever you stored it) and serve it.