public void ReadRecords()
        {
            Console.WriteLine("Program start reading recent file history...");
            XmlTextReader reader = null;

            try
            {
                // Load the reader with the data file and ignore all white space nodes.
                reader = new XmlTextReader(RSFile);
                int filter = 0; //the bit used to filter out entries
                reader.WhitespaceHandling = WhitespaceHandling.None;
                String fileName  = "";
                String extension = "";
                String filePath  = "";
                String mTime     = "";
                String cTime     = "";
                String eTime     = "";
                String missing   = "";
                String stored_in = "";
                //the flag used to indicate what is the current tag:
                int tag = -1;
                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        tag = GetFlag(reader.Name);
                        if (tag == 0)
                        {
                            filter    = 0;
                            fileName  = "";
                            extension = "";
                            filePath  = "";
                        }
                        if (tag == -2)
                        {
                            filter = 1;
                        }
                        //Console.WriteLine("<{0}>", reader.Name);
                        break;

                    case XmlNodeType.Text:
                        if (tag == 1)
                        {
                            filePath = reader.Value;
                        }                                              // full name of the file indicate the path of the file
                        if (tag == 8)
                        {
                            fileName = reader.Value;
                        }                                              //the file_only property indicate the name of the file
                        if (tag == 7)
                        {
                            extension = reader.Value;
                        }                                               // the extension of the file
                        if (tag == 2)
                        {
                            mTime = reader.Value;
                        }                                           //modified Time
                        if (tag == 3)
                        {
                            cTime = reader.Value;
                        }                                           //created Time
                        if (tag == 4)
                        {
                            eTime = reader.Value;
                        }                                           //execute Time
                        if (tag == 5)
                        {
                            missing = reader.Value;
                        }                                             //missing?
                        if (tag == 6)
                        {
                            stored_in = reader.Value;
                        }                                               //stored_in
                        //Console.WriteLine(reader.Value);
                        break;

                    case XmlNodeType.EndElement:
                        if ((filter == 0) && (reader.Name == "item"))
                        {
                            if ((Tools.IsValid(fileName, filePath, extension, stored_in)) && (Tools.IsValidTimeRange(mTime, cTime, eTime, lastUpdate, DateTime.Now) != -1))
                            {
                                FileNode tempNode = new FileNode();
                                tempNode.SetFileName(fileName);
                                tempNode.SetCreatedTime(cTime);
                                tempNode.SetExecuteTime(eTime);
                                tempNode.SetModifiedTime(mTime);
                                tempNode.SetFilePath(filePath);
                                tempNode.SetMissing(missing);
                                LinkedListNode <FileNode> node = new LinkedListNode <FileNode>(tempNode);
                                // Console.WriteLine(tempNode.GetFilename());
                                fileList.AddLast(node);
                            }
                        }
                        // Console.WriteLine("</{0}>", reader.Name);
                        break;

                    default:
                        break;
                    }
                }
            }

            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
            Console.WriteLine("Reading Finished...");
        }
        public void ReadRecords()
        {
            Console.WriteLine("Program start reading recent file history...");
            XmlTextReader reader = null;

            try
            {
                // Load the reader with the data file and ignore all white space nodes.
                reader = new XmlTextReader(RSFile);
                sync   = 1;
                int filter = 0; //the bit used to filter out entries
                reader.WhitespaceHandling = WhitespaceHandling.None;
                String fileName  = "";
                String extension = "";
                String filePath  = "";
                String mTime     = "";
                String cTime     = "";
                String eTime     = "";
                //the flag used to indicate what is the current tag:
                int tag = -1;
                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        tag = GetFlag(reader.Name);
                        if (tag == 0)
                        {
                            filter    = 0;
                            fileName  = "";
                            extension = "";
                            filePath  = "";
                        }
                        if (tag == -2)
                        {
                            filter = 1;
                        }
                        //Console.WriteLine("<{0}>", reader.Name);
                        break;

                    case XmlNodeType.Text:
                        if (tag == 1)
                        {
                            filePath = reader.Value;
                        }                                              // full name of the file indicate the path of the file
                        if (tag == 8)
                        {
                            fileName = reader.Value;
                        }                                              //the file_only property indicate the name of the file
                        if (tag == 7)
                        {
                            extension = reader.Value;
                        }                                               // the extension of the file
                        if (tag == 2)
                        {
                            mTime = reader.Value;
                        }                                           //modified Time
                        if (tag == 3)
                        {
                            cTime = reader.Value;
                        }                                           //created Time
                        if (tag == 4)
                        {
                            eTime = reader.Value;
                        }                                           //execute Time
                        //Console.WriteLine(reader.Value);
                        break;

                    case XmlNodeType.EndElement:
                        if ((filter == 0) && (reader.Name == "item"))
                        {
                            if (IsValid(fileName, filePath, extension, mTime, cTime, eTime))
                            {
                                FileNode tempNode = new FileNode();
                                tempNode.SetFileName(fileName);
                                LinkedListNode <FileNode> node = new LinkedListNode <FileNode>(tempNode);
                                // Console.WriteLine(tempNode.GetFilename());
                                fileList.AddLast(node);
                            }
                        }
                        // Console.WriteLine("</{0}>", reader.Name);
                        break;

                    default:
                        break;

                        /*
                         * case XmlNodeType.CDATA:
                         *  Console.WriteLine("3");
                         *  Console.WriteLine("<![CDATA[{0}]]>", reader.Value);
                         *  break;
                         * case XmlNodeType.ProcessingInstruction:
                         *  Console.WriteLine("4");
                         *  Console.WriteLine("<?{0} {1}?>", reader.Name, reader.Value);
                         *  break;
                         * case XmlNodeType.Comment:
                         *  Console.WriteLine("5");
                         *  Console.WriteLine("<!--{0}-->", reader.Value);
                         *  break;
                         * case XmlNodeType.XmlDeclaration:
                         *  Console.WriteLine("6");
                         *  Console.WriteLine("<?xml version='1.0'?>");
                         *  break;
                         * case XmlNodeType.Document:
                         *  Console.WriteLine("7");
                         *  break;
                         * case XmlNodeType.DocumentType:
                         *  Console.WriteLine("8");
                         *  Console.WriteLine("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
                         *  break;
                         * case XmlNodeType.EntityReference:
                         *  Console.WriteLine("9");
                         *  Console.WriteLine(reader.Name);
                         *  break;*/
                    }
                }
            }

            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
            sync = 0;
            Console.WriteLine("Reading Finished...");
        }