There isn’t much online about saving an output of data to an XML file. When trying with a file system task it throws errors. There is a workaround for this.
You can use a data flow task in SSIS to export to a flat file that is an XML file. You simply need to have a query that outputs in XML format, for example you can execute a stored procedure that returns the data in XML format:
SELECT [<?xml version="1.0"?> <batch>] = X.XMLString FROM ( SELECT XMLString = '<Messages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/Wonga.Payments.Csapi.Commands"><CreateTransaction><ApplicationGuid>' + CONVERT(VARCHAR(36), ApplicationID) + '</ApplicationGuid><PostedOn>' + CONVERT(VARCHAR(19), X.EffectiveDate, 126) + '</PostedOn><Scope>' + CASE WHEN AmountToPost < 0 THEN '2' WHEN AmountToPost > 0 THEN '1' ELSE '0' END + '</Scope><Type>' + '18' + '</Type><Amount>' + CONVERT(VARCHAR(10), AmountToPost) + '</Amount><Mir>' + '0' + '</Mir><Currency>710</Currency><Reference>' + Reference + '</Reference><SalesforceUsername>User</SalesforceUsername></CreateTransaction></Messages>' FROM ( SELECT * FROM #DataSet ) X UNION SELECT '</batch>' ) X ORDER BY CASE WHEN X.XMLString LIKE '<?%' THEN 1 WHEN X.XMLString LIKE '<M%' THEN 2 ELSE 3 END EXEC dbo.GenerateXML WITH RESULT SETS (( [<?xml version="1.0"?> <batch>] VARCHAR(MAX) ))
You use the Execute XML as the source from the database and then you use a flat file as your destination with .xml as the extension.
This should solve your problem of outputting to an XML file.