/// <summary>
        /// Load configuration from file.
        /// </summary>
        /// <param name="filePath">XML configuration file path.</param>
        public void Load(string filePath)
        {
            // Check the configuration file first
            try
            {
                XmlHelper.Validate(filePath, ConfigSchema);
            }
            catch (InvalidDataException ide)
            {
                string message = string.Format(CultureInfo.InvariantCulture,
                    "The configuration file [{0}] error is found.",
                    filePath);
                throw new InvalidDataException(message, ide);
            }

            // Load configuration
            XmlDocument dom = new XmlDocument();
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(dom.NameTable);
            nsmgr.AddNamespace("tts", ConfigSchema.TargetNamespace);
            dom.Load(filePath);

            XmlNodeList unitListNodes = dom.DocumentElement.SelectNodes(@"tts:unitList", nsmgr);

            _unitListMap.Clear();
            foreach (XmlNode unitListNode in unitListNodes)
            {
                UnitList unitList = new UnitList();
                unitList.Parse(unitListNode, nsmgr);
                _unitListMap.Add(unitList.Id, unitList);
            }

            XmlNode dropSentencesNode = dom.DocumentElement.SelectSingleNode(@"tts:dropSentences", nsmgr);

            if (dropSentencesNode != null)
            {
                _dropSentenceList.Parse(dropSentencesNode, nsmgr);
            }
        }