private static void read_list_of_records(Stream ResStream, OAI_Repository_Records_List ReturnValue)
        {
            // Try to read the XML
            XmlTextReader r = new XmlTextReader(ResStream);

            bool inRecord = false;
            OAI_Repository_DublinCore_Record thisRecord = new OAI_Repository_DublinCore_Record();

            while (r.Read())
            {
                if (inRecord)
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        switch (r.Name)
                        {
                        case "identifier":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.OAI_Identifier = r.Value.Trim();
                            }
                            break;

                        case "datestamp":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Datestamp = r.Value.Trim();
                            }
                            break;

                        case "dc:title":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Title(r.Value.Trim());
                            }
                            break;

                        case "dc:creator":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Creator(r.Value.Trim());
                            }
                            break;

                        case "dc:subject":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Subject(r.Value.Trim());
                            }
                            break;

                        case "dc:description":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Description(r.Value.Trim());
                            }
                            break;

                        case "dc:publisher":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Publisher(r.Value.Trim());
                            }
                            break;

                        case "dc:contributor":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Contributor(r.Value.Trim());
                            }
                            break;

                        case "dc:date":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Date(r.Value.Trim());
                            }
                            break;

                        case "dc:type":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Type(r.Value.Trim());
                            }
                            break;

                        case "dc:format":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Format(r.Value.Trim());
                            }
                            break;

                        case "dc:source":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Source(r.Value.Trim());
                            }
                            break;

                        case "dc:identifier":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Identifier(r.Value.Trim());
                            }
                            break;

                        case "dc:language":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Language(r.Value.Trim());
                            }
                            break;

                        case "dc:relation":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Relation(r.Value.Trim());
                            }
                            break;

                        case "dc:coverage":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Coverage(r.Value.Trim());
                            }
                            break;

                        case "dc:rights":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Rights(r.Value.Trim());
                            }
                            break;
                        }
                    }
                    else if ((r.NodeType == XmlNodeType.EndElement) && (r.Name == "record"))
                    {
                        inRecord = false;
                        ReturnValue.Add_Record(thisRecord);
                    }
                }
                else
                {
                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "record"))
                    {
                        inRecord   = true;
                        thisRecord = new OAI_Repository_DublinCore_Record();
                    }

                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "resumptionToken"))
                    {
                        r.Read();
                        if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                        {
                            ReturnValue.Resumption_Token = r.Value;
                        }
                        break;
                    }
                }
            }
        }
        private static void read_list_of_records(Stream ResStream, OAI_Repository_Records_List ReturnValue)
        {
            // Try to read the XML
            XmlTextReader r = new XmlTextReader(ResStream);

            bool inRecord = false;
            OAI_Repository_DublinCore_Record thisRecord = new OAI_Repository_DublinCore_Record();
            while (r.Read())
            {
                if (inRecord)
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        switch (r.Name)
                        {
                            case "identifier":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.OAI_Identifier = r.Value.Trim();
                                }
                                break;

                            case "datestamp":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Datestamp = r.Value.Trim();
                                }
                                break;

                            case "dc:title":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Title(r.Value.Trim());
                                }
                                break;

                            case "dc:creator":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Creator(r.Value.Trim());
                                }
                                break;

                            case "dc:subject":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Subject(r.Value.Trim());
                                }
                                break;

                            case "dc:description":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Description(r.Value.Trim());
                                }
                                break;

                            case "dc:publisher":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Publisher(r.Value.Trim());
                                }
                                break;

                            case "dc:contributor":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Contributor(r.Value.Trim());
                                }
                                break;

                            case "dc:date":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Date(r.Value.Trim());
                                }
                                break;

                            case "dc:type":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Type(r.Value.Trim());
                                }
                                break;

                            case "dc:format":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Format(r.Value.Trim());
                                }
                                break;

                            case "dc:source":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Source(r.Value.Trim());
                                }
                                break;

                            case "dc:identifier":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Identifier(r.Value.Trim());
                                }
                                break;

                            case "dc:language":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Language(r.Value.Trim());
                                }
                                break;

                            case "dc:relation":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Relation(r.Value.Trim());
                                }
                                break;

                            case "dc:coverage":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Coverage(r.Value.Trim());
                                }
                                break;

                            case "dc:rights":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Rights(r.Value.Trim());
                                }
                                break;
                        }
                    }
                    else if ((r.NodeType == XmlNodeType.EndElement) && (r.Name == "record"))
                    {
                        inRecord = false;
                        ReturnValue.Add_Record(thisRecord);
                    }
                }
                else
                {
                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "record"))
                    {
                        inRecord = true;
                        thisRecord = new OAI_Repository_DublinCore_Record();
                    }

                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "resumptionToken"))
                    {
                        r.Read();
                        if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                        {
                            ReturnValue.Resumption_Token = r.Value;
                        }
                        break;
                    }
                }
            }
        }