How do i save my objects position dynamically in a file?

Hi i have a requirement in one of my projects, where i have to save or store the XYZ coordinates of a moving game object(cube) in a file(Text/XML or whatever). Here my object(cube) is continously moving and rotating, and i want to store the its position values in a file dynamically.Can anybody please help me to do this in an easy way?

Hi try this script:

using System.IO;
using System;
using System.Xml;
using System.Net;

public class SaveStatistics : MonoBehaviour
{
    public GameObject trackedPlayer;
    public GameObject calibration;
	public string version = "Prototype_0.1";
	public bool bLog = true;
    private static XmlWriterSettings fragmentSettings;
    private string logFilePath, logFileDir;
	
	
	private PlayerLocal localPlayer;
	private Healthbar hb;
	
	
    static FileStream logfile;
	
	static string trackerDir = "trackerStatistics";
 	
	void Start()
	{
		if(bLog)
			PrepareLog();
	}
	
    // Use this for initialization
    void PrepareLog ()
    {
		print("******************* LOGFILE STARTING *****************");
        XmlWriterSettings wrapperSettings = new XmlWriterSettings ();
        wrapperSettings.Indent = true;
		
//		print("TODO AUTO CREATE DIRECTORY at Savestatistics.cs...");
		
        string basename = DateTime.Now.ToOADate ().ToString ();
	
		logFileDir = Path.GetDirectoryName(Application.dataPath)+"/"+trackerDir+"/";

        if (!Directory.Exists(logFileDir))
			Directory.CreateDirectory(logFileDir);

		
        string wrappername = logFileDir + "wrapper-" + basename + ".xml";
        logFilePath = logFileDir + "log-" + basename + ".xml";
 
        trackedPlayer = GameObject.FindGameObjectWithTag ("Player");
		if(trackedPlayer != null)
		{
			hb = trackedPlayer.GetComponent<Healthbar>();
			
		}
 
        // Write the wrapper file
        GameObject ld = GameObject.Find ("LevelData");
       // string version = ld.GetComponent<LevelData> ().levelVersion;
        string doctype = "<!DOCTYPE trackerdata 

[

]>";

        using (XmlWriter writer = XmlWriter.Create (wrappername, wrapperSettings)) {
            writer.WriteStartDocument();
            writer.WriteRaw (doctype); 
            writer.WriteStartElement ("trackerdata");
 
            // meta
            writer.WriteStartElement ("meta");
 
 
            writer.WriteStartElement ("starttime");
            writer.WriteValue (DateTime.Now);
            writer.WriteEndElement ();
			
			writer.WriteStartElement("hostname");
			writer.WriteValue(Dns.GetHostName());
			writer.WriteEndElement();
			
			writer.WriteStartElement("playername");
			writer.WriteValue(PlayerPrefs.GetString("Name"));
			writer.WriteEndElement();
			
			writer.WriteStartElement("playerscore");
			writer.WriteValue(PlayerPrefs.GetInt("PlayerScore"));
			writer.WriteEndElement();
 
            writer.WriteElementString ("levelversion", version);
 
            writer.WriteEndElement ();
            // /meta
 
            writer.WriteStartElement ("tracking");
            writer.WriteEntityRef ("locations");            
            writer.Close ();
        }
 
        // Prepare the log XML fragment
        logfile = new FileStream (logFilePath, FileMode.Append, FileAccess.Write, FileShare.Read);
 
        fragmentSettings = new XmlWriterSettings ();
        fragmentSettings.ConformanceLevel = ConformanceLevel.Fragment;
        fragmentSettings.Indent = true;
        fragmentSettings.OmitXmlDeclaration = false;
 
        InvokeRepeating("CollectData", 0, 10); //collect data every 10 seconds
    }
	
	void CollectData ()
    {
 		if(localPlayer == null)
		{
			
			try{
				localPlayer = trackedPlayer.GetComponent<PlayerLocal>();
			}catch (Exception e)
			{
				return;
			}
			
			return;
		}
		
        using (XmlWriter writer = XmlWriter.Create (logfile, fragmentSettings)) {
            writer.WriteStartElement ("PlayerData");
 
            writer.WriteStartAttribute ("runningTime");
            writer.WriteValue (Time.timeSinceLevelLoad);
            writer.WriteEndAttribute ();
 			
			writer.WriteStartElement ("location");
			
            writer.WriteStartElement ("x");
            writer.WriteValue (trackedPlayer.transform.transform.position.x);
            writer.WriteEndElement ();
 
            writer.WriteStartElement ("y");
            writer.WriteValue (trackedPlayer.transform.position.y);
            writer.WriteEndElement ();
 
            writer.WriteStartElement ("z");
            writer.WriteValue (trackedPlayer.transform.position.z);
            writer.WriteEndElement ();
 			
			writer.WriteEndElement();
			
			
			
			writer.WriteStartElement ("weight");
            writer.WriteValue (hb.GetCurrentWeight().ToString());
            writer.WriteEndElement ();
 
           
 
            writer.WriteStartElement ("Score");
            writer.WriteValue (localPlayer.Score);
            writer.WriteEndElement ();

            writer.WriteEndElement ();
            writer.Flush ();
 
        }
 
        logfile.Flush ();
    }
	
	public static void AddEventInfo(string nodename, string value)
	{
		using (XmlWriter writer = XmlWriter.Create (logfile, fragmentSettings)) {
            writer.WriteStartElement ("event");
 
            writer.WriteStartAttribute ("runningTime");
            writer.WriteValue (Time.timeSinceLevelLoad);
            writer.WriteEndAttribute ();
 
            writer.WriteStartElement (nodename);
            writer.WriteValue (value);
            writer.WriteEndElement ();

            writer.WriteEndElement ();
            writer.Flush ();
 
        }
 
        logfile.Flush ();	
	}
	
	public static void AddPlayerStats(string nodename, string value)
	{
		using (XmlWriter writer = XmlWriter.Create (logfile, fragmentSettings)) {
            writer.WriteStartElement ("playerstats");
 
            writer.WriteStartAttribute ("runningTime");
            writer.WriteValue (Time.timeSinceLevelLoad);
            writer.WriteEndAttribute ();
 
            writer.WriteStartElement (nodename);
            writer.WriteValue (value);
            writer.WriteEndElement ();

            writer.WriteEndElement ();
            writer.Flush ();
 
        }
 
        logfile.Flush ();	
	}
	
	public static void AddHitEventInfo(string nodename, string value)
	{
		using (XmlWriter writer = XmlWriter.Create (logfile, fragmentSettings)) {
            writer.WriteStartElement ("hitevent");
 
            writer.WriteStartAttribute ("runningTime");
            writer.WriteValue (Time.timeSinceLevelLoad);
            writer.WriteEndAttribute ();
 			
            writer.WriteStartElement (nodename);
            writer.WriteValue (value);
            writer.WriteEndElement ();

            writer.WriteEndElement ();
            writer.Flush ();
 
        }
 
        logfile.Flush ();	
	}
}