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 + ">");
}
}
}