As you know there is no XML destination in SSIS.
so how you can save result of a query from sql server to XML file?
 Solution is:
First Of all you can use FOR XML to get result of query in XML , look at our sample query :
SELECT EmployeeID,NationalIDNumber,ContactID
FROM HumanResources.Employee 
FOR XML RAW(‘Facility’),Root(‘Extract’),Elements   
this will creates elements with name ‘Facility’, and attributes ‘EmployeeID’ , ‘NationalIDNumber’ , ‘ContactID’
and the Root node is ‘Extract’.
for more information about FOR XML in sql server look here .
So, start with SSIS:
1- Create a Variable of String type in package scope, and name it as XMLData.

2- Add an Execute SQL Task, set connection as OLEDB to the AdventureWorks Database ( If you haven’t AdventureWorks sample database, download it from here ),
write this query in SqlStatement:
 SELECT EmployeeID,NationalIDNumber,ContactID 
FROM HumanResources.Employee 
FOR XML RAW(‘Facility’),Root(‘Extract’),Elements  
 
 
Set ResultSet property to XML.
then go to Result Set tab, and do this mapping:
Result Name Variable Name
——————————————–
0 User::XMLData
 
 
3- Add a Script Task after execute sql task, set language as C#. and set ReadOnlyVariables as User::XMLData .
 
 
then edit script and write this code in Main() method:
public void Main()
        {
            System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
            xdoc.InnerXml = Dts.Variables["XMLData"].Value.ToString();
            xdoc.Save(@"E:\Output.xml");
            Dts.TaskResult = (int)ScriptResults.Success;
        }
 
 
whole schema:
 
 
Finished !
now just run the package and result of query will save in xml file specified.





