AudioSynthesis.Bank.DescriptorList.ReadNextTag C# (CSharp) Method

ReadNextTag() private static method

private static ReadNextTag ( StreamReader reader, List descList ) : string
reader System.IO.StreamReader
descList List
return string
        private static string ReadNextTag(StreamReader reader, List<string> descList)
        {
            string tagName;
            string closeTag;
            string description;
            StringBuilder sbuild = new StringBuilder();
            int c = reader.Read();
            //skip anything outside of the tags
            while (c != -1 && c != '<')
                c = reader.Read();
            //read opening tag
            c = reader.Read();
            while (c != -1 && c != '>')
            {
                sbuild.Append((char)c);
                c = reader.Read();
            }
            tagName = sbuild.ToString().Trim().ToLower();
            sbuild.Length = 0;
            //read the description
            c = reader.Read();
            while (c != -1 && c != '<')
            {
                sbuild.Append((char)c);
                c = reader.Read();
            }
            description = sbuild.ToString();
            sbuild.Length = 0;
            //read closing tag
            c = reader.Read();
            while (c != -1 && c != '>')
            {
                sbuild.Append((char)c);
                c = reader.Read();
            }
            closeTag = sbuild.ToString().Trim().ToLower();
            if (closeTag.Length > 1 && closeTag.StartsWith("/") && closeTag.Substring(1).Equals(tagName))
            {
                descList.AddRange(description.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries));
                return tagName;
            }
            else
            {
                throw new Exception("Invalid tag! <" + tagName + ">...<" + closeTag + ">");
            }
        }
    }