private static string[] GetContainerElements(string elementName) {
if (String.IsNullOrEmpty(elementName))
return new string[0];
elementName = elementName.ToLower(CultureInfo.InvariantCulture);
char firstCharLower = elementName[0];
switch (firstCharLower) {
case 't':
if (String.Compare(elementName, "td", StringComparison.Ordinal) == 0 || String.Compare(elementName, "th", StringComparison.Ordinal) == 0) {
return new string[] { "tr", "table" };
}
if (String.Compare(elementName, "tr", StringComparison.Ordinal) == 0) {
return new string[] { "table", "thead", "tfoot", "tbody" };
}
if (String.Compare(elementName, "thead", StringComparison.Ordinal) == 0 ||
String.Compare(elementName, "tfoot", StringComparison.Ordinal) == 0 || String.Compare(elementName, "tbody", StringComparison.Ordinal) == 0) {
return new string[] { "table" };
}
break;
case 'd':
if (String.Compare(elementName, "dd", StringComparison.Ordinal) == 0 || String.Compare(elementName, "dt", StringComparison.Ordinal) == 0) {
return new string[] { "dl", "dialog" };
}
break;
case 'l':
if (String.Compare(elementName, "li", StringComparison.Ordinal) == 0) {
return new string[] { "ol", "ul", "menu" };
}
break;
case 'o':
if (String.Compare(elementName, "option", StringComparison.Ordinal) == 0) {
return new string[] { "select", "datalist", "optgroup" };
}
break;
case 'f':
if (String.Compare(elementName, "frame", StringComparison.Ordinal) == 0) {
return new string[] { "frameset" };
}
break;
}
return new string[0];
}
#endregion