private void UpdateTagPair(ElementTagPair elementTagPair, ISegment originalTarget, ISegment originalSource, Stack <IAbstractMarkupDataContainer> containers) { if (elementTagPair.Type == Element.TagType.OpeningTag) { var tagPair = GetElement(elementTagPair.TagId, originalTarget, originalSource, elementTagPair); if (tagPair == null) { tagPair = _segmentBuilder.CreateTagPair(elementTagPair.TagId, elementTagPair.TagContent); } if (tagPair is IAbstractMarkupDataContainer tagPairContainer) { tagPairContainer.Clear(); var container = containers.Peek(); container.Add(tagPair); containers.Push(tagPairContainer); } } else if (elementTagPair.Type == Element.TagType.ClosingTag) { containers.Pop(); } }
private ElementTagPair ReadClosingElementTagPair(XmlReader xmlReader) { var elementTagPair = new ElementTagPair { Type = Element.TagType.ClosingTag }; var index = 0; while (xmlReader.Read()) { switch (xmlReader.NodeType) { case XmlNodeType.Element: if (index == 0 && string.Compare(xmlReader.Name, "ept", StringComparison.OrdinalIgnoreCase) == 0) { index++; while (xmlReader.MoveToNextAttribute()) { if (string.Compare(xmlReader.Name, "id", StringComparison.OrdinalIgnoreCase) == 0) { elementTagPair.TagId = xmlReader.Value; } if (string.Compare(xmlReader.Name, "equiv-text", StringComparison.OrdinalIgnoreCase) == 0) { elementTagPair.DisplayText = xmlReader.Value; } } } break; case XmlNodeType.Whitespace: elementTagPair.TagContent += xmlReader.Value; break; case XmlNodeType.Text: elementTagPair.TagContent += xmlReader.Value; break; case XmlNodeType.CDATA: elementTagPair.TagContent += xmlReader.Value; break; case XmlNodeType.EntityReference: elementTagPair.TagContent += xmlReader.Name; break; } } return(elementTagPair); }
public void VisitTagPair(ITagPair tagPair) { if (!_ignoreTags) { var element = new ElementTagPair { Type = Element.TagType.TagOpen, TagId = tagPair.TagProperties.TagId.Id, TagContent = tagPair.TagProperties.TagContent, DisplayText = tagPair.TagProperties.DisplayText }; if (!TagPairIds.Contains(element.TagId)) { TagPairIds.Add(element.TagId); } Elements.Add(element); Text += tagPair.StartTagProperties.TagContent; _tagPairStack.Push(tagPair); } VisitChilderen(tagPair); if (!_ignoreTags) { var currentTag = _tagPairStack.Pop(); var element = new ElementTagPair { Type = Element.TagType.TagClose, TagId = currentTag.TagProperties.TagId.Id, TagContent = currentTag.EndTagProperties.TagContent }; Elements.Add(element); Text += currentTag.EndTagProperties.TagContent; } }