/// <summary>
        /// Imports a list of servers from a file.
        /// </summary>
        public static void Import(string filepath, bool register)
        {
            Export.ListOfRegisteredServers list = new Opc.ConfigTool.Export.ListOfRegisteredServers();

            // read from file.
            XmlTextReader reader     = new XmlTextReader(filepath);
            XmlSerializer serializer = new XmlSerializer(typeof(Export.ListOfRegisteredServers), ConfigUtils.ConfigToolSchemaUri);

            Export.ListOfRegisteredServers servers = (Export.ListOfRegisteredServers)serializer.Deserialize(reader);
            reader.Close();

            if (ConfigUtils.IsEmpty(servers.Server))
            {
                return;
            }

            // registers the servers.
            for (int ii = 0; ii < servers.Server.Length; ii++)
            {
                RegisteredDotNetOpcServer server = Import(servers.Server[ii]);

                if (register)
                {
                    server.Register();
                }
                else
                {
                    server.Unregister();
                }
            }
        }
        /// <summary>
        /// Imports a server from a export file.
        /// </summary>
        private static RegisteredDotNetOpcServer Import(Export.RegisteredServer serverToImport)
        {
            RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer();

            // assign clsid if none specified.
            if (String.IsNullOrEmpty(serverToImport.Clsid))
            {
                server.Clsid = ConfigUtils.CLSIDFromProgID(serverToImport.ProgId);

                if (server.Clsid == Guid.Empty)
                {
                    server.Clsid = Guid.NewGuid();
                }
            }
            else
            {
                server.Clsid = new Guid(serverToImport.Clsid);
            }

            // get prog id and description.
            server.ProgId      = serverToImport.ProgId;
            server.Description = serverToImport.Description;

            // parse wrapper clsid/prog id.
            try
            {
                server.WrapperClsid = new Guid(serverToImport.WrapperClsid);
            }
            catch
            {
                server.WrapperClsid = ConfigUtils.CLSIDFromProgID(serverToImport.WrapperClsid);
            }

            // parse wrapped server clsid/prog id.
            try
            {
                server.ServerClsid = new Guid(serverToImport.ServerClsid);
            }
            catch
            {
                server.ServerClsid = ConfigUtils.CLSIDFromProgID(serverToImport.ServerClsid);
            }

            // read parameters.
            server.Parameters.Clear();

            if (!ConfigUtils.IsEmpty(serverToImport.Parameter))
            {
                for (int ii = 0; ii < serverToImport.Parameter.Length; ii++)
                {
                    Export.Parameter parameter = serverToImport.Parameter[ii];

                    if (parameter != null && !String.IsNullOrEmpty(parameter.Name))
                    {
                        server.Parameters.Add(parameter.Name, parameter.Value);
                    }
                }
            }

            // return new server.
            return(server);
        }