/// <summary> /// Fills this HtmlPage's Tags list by parsing UnparsedLiteral field value /// </summary> public void ParseFromUnparsedLiteral() { if (UnparsedLiteral != null && UnparsedLiteral.Length > 0) { List <string> tagsStrings = Serialize.SplitByRootTags(UnparsedLiteral); Tags.Clear(); //in case it is not first parsing foreach (string tagString in tagsStrings) { HtmlTag tag = new HtmlTag(); tag.UnparsedLiteral = tagString; tag.ParseFromUnparsedLiteral(); Tags.Add(tag); } } }
public void ParseFromUnparsedLiteral() { if (UnparsedLiteral != null && UnparsedLiteral.Length > 0) { int index = 0; int closingBracketIndex = -1; while (index < UnparsedLiteral.Length) { if (UnparsedLiteral[index] == Serialize.HtmlTagClosingBracket) { closingBracketIndex = index; break; } index++; } if (closingBracketIndex < 0) //if this segment of HTML is incorrect { return; } string tagHeader = UnparsedLiteral.Substring(0, closingBracketIndex + 1); ParseNameAndAttributesFromTagHeader(tagHeader); string tagNestedContents = UnparsedLiteral.Substring(closingBracketIndex + 1); //remove opening tag if (tagNestedContents.Length > 0) //remove closing tag { int indexOfClosingTagStart = tagNestedContents.LastIndexOf(Serialize.HtmlClosingTagNamePrefix) - 1; if (indexOfClosingTagStart >= 0) { tagNestedContents = tagNestedContents.Substring(0, indexOfClosingTagStart); } } List <string> tagsStrings = Serialize.SplitByRootTags(tagNestedContents); NestedTags.Clear(); //in case it is not first parsing foreach (string tagString in tagsStrings) { HtmlTag tag = new HtmlTag(); tag.UnparsedLiteral = tagString; tag.ParseFromUnparsedLiteral(); NestedTags.Add(tag); } } }