Seldom do I use straight XML files anymore; they always seem to be generated from dynamic content, often from PHP running through a DB table.  By dynamically generating the XML file, the system has no way of knowing the size of the final output, so ProgressEvent.PROGRESS listeners will silently fail.  It’s easy enough to remedy this, though, using the content-length header.  Just pass a value equal to the length of the xml as a string:

Example in PHP:

$xml = 'Hello World';
header("Content-type: text/xml\r\n");
header("Content-length: " . strlen($xml) . "\r\n" );
print $xml;