void ToXmlFile(LPCTSTR lpszFileName,
                           bool bIncludeDocHeader = true,
                           bool bFormatXML = true,
                           XmlEncoding encoding = XmlEncoding_UTF8,
                           EOLType eolType = EOLType_CRLF,
                           const CXmlSerializationContext& context = CXmlSerializationContext::GetDefaultContext(),
                           CompressionType compressionType = CompressionType_NONE) const
  Property Description  
    Method Name ToXMLFile  
    Argument - filename The name of the file that will receive the xml.  
    Argument - bIncludeDocHeader If this is true then then header <?xml version="1.0" ?> is applied to the output (making it a proper XML document as opposed to a snippet.)  
    Argument - bFormatXML Indicates how the XML should be formatted.
true to turn on indenting, false for no formatting (single line output).
    Argument - encoding The type of encoding to use when formating the XML. UTF8, UTF16 & Unicode are options. UTF8 is default.  
    Argument - eolType Indicates the type of End of line token to use, LF or CRLF. Defaults to CRLF.  
    Argument - context

The CXmlSerializationContext object controls the way in which XML is serialized/de-serialized. Its main role is to control the way in which validation is performed and which namespaces are output.
If this is not specified, the a default (CXmlSerializationContext::Default global static) instance of the class is used. If you are using several libraries generated from different schemas, or you want to change the way validation is performed for during the lifetime of the application or you are writing multithreaded code, then you should consider creating your own instance(s) of the CXmlSerializationContext.

Note: If you are writing a multithreaded app it is highly recommended that you use a different instance of this class on each thread, as access to the static instance is not synchronized. Although read only operations to the static instance (CXmlSerializationContext::Default) of the class are thread safe, if the global instance CXmlSerializationContext::Default is modified, then this could potentially cause threading problems.

    Argument - compressionType Indicates the type of compression to apply to the output file, NONE, GZIP, or ZLIB. Defaults to NONE.  
    Description Writes XML from the current object to a file.  

If the file already exists it is overwritten, if it does not exist it is created.
It will raise an exception if the XML within the object is not valid, i.e. invalid number of entries in a collection.

If the encoding is UTF-8 (the default) then the file is written out using the UTF-8 encoding scheme. It should be noted that UTF-8 encoding will encode  characters using 1-4 bytes. As such if the file is examined with a viewer that is not capable of decoding UTF-8, it will appear to contain odd characters. However if it is viewed with a compliant viewer (e.g. IExplorer) the file will appear as expected.

See Multi-Language Support and Global Functions for more information.

If the encoding selected is UNICODE, then the file is written out using 2 bytes per character. The standard 0xff 0xfe are placed at the beginning of the file to indicate to other applications that it is a UNICODE file.