AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.9" />

.NET API 1,224,192 bytes

 DocumentFragment

Represents a document fragment.
using AngleSharp.Dom.Collections; using AngleSharp.Dom.Html; using AngleSharp.Extensions; using AngleSharp.Html; using AngleSharp.Parser.Html; using System.IO; using System.Linq; using System.Text; namespace AngleSharp.Dom { internal sealed class DocumentFragment : Node, IDocumentFragment, INode, IEventTarget, IMarkupFormattable, IParentNode, INonElementParentNode { private HtmlCollection<IElement> _elements; public int ChildElementCount => base.ChildNodes.OfType<Element>().Count(); public IHtmlCollection<IElement> Children => _elements ?? (_elements = new HtmlCollection<IElement>(this, false, null)); public IElement FirstElementChild { get { NodeList childNodes = base.ChildNodes; int length = childNodes.Length; for (int i = 0; i < length; i++) { IElement element = childNodes[i] as IElement; if (element != null) return element; } return null; } } public IElement LastElementChild { get { NodeList childNodes = base.ChildNodes; for (int num = childNodes.Length - 1; num >= 0; num--) { IElement element = childNodes[num] as IElement; if (element != null) return element; } return null; } } public override string TextContent { get { StringBuilder stringBuilder = Pool.NewStringBuilder(); foreach (IText item in this.GetDescendants().OfType<IText>()) { stringBuilder.Append(item.Data); } return stringBuilder.ToPool(); } set { TextNode node = (!string.IsNullOrEmpty(value)) ? new TextNode(base.Owner, value) : null; ReplaceAll(node, false); } } internal DocumentFragment(Document owner) : base(owner, "#document-fragment", NodeType.DocumentFragment, NodeFlags.None) { } internal DocumentFragment(Element context, string html) : this(context.Owner) { TextSource source = new TextSource(html); HtmlDomBuilder htmlDomBuilder = new HtmlDomBuilder(new HtmlDocument(base.Owner.Context, source)); HtmlParserOptions options = new HtmlParserOptions { IsEmbedded = false, IsStrictMode = false, IsScripting = base.Owner.Options.IsScripting() }; IElement documentElement = htmlDomBuilder.ParseFragment(options, context).DocumentElement; while (documentElement.HasChildNodes) { INode firstChild = documentElement.FirstChild; documentElement.RemoveChild(firstChild); this.PreInsert(firstChild, null); } } public override INode Clone(bool deep = true) { DocumentFragment documentFragment = new DocumentFragment(base.Owner); CloneNode(documentFragment, deep); return documentFragment; } public void Prepend(params INode[] nodes) { this.PrependNodes(nodes); } public void Append(params INode[] nodes) { this.AppendNodes(nodes); } public IElement QuerySelector(string selectors) { return base.ChildNodes.QuerySelector(selectors); } public IHtmlCollection<IElement> QuerySelectorAll(string selectors) { return base.ChildNodes.QuerySelectorAll(selectors); } public IHtmlCollection<IElement> GetElementsByClassName(string classNames) { return base.ChildNodes.GetElementsByClassName(classNames); } public IHtmlCollection<IElement> GetElementsByTagName(string tagName) { return base.ChildNodes.GetElementsByTagName(tagName); } public IHtmlCollection<IElement> GetElementsByTagNameNS(string namespaceURI, string tagName) { return base.ChildNodes.GetElementsByTagName(namespaceURI, tagName); } public IElement GetElementById(string elementId) { return base.ChildNodes.GetElementById(elementId); } public override void ToHtml(TextWriter writer, IMarkupFormatter formatter) { base.ChildNodes.ToHtml(writer, formatter); } } }