AngleSharp by Florian Rappl

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

.NET API 1,171,968 bytes

 HtmlTemplateElement

Represents the template element.
using AngleSharp.Dom.Css; using AngleSharp.Html; using System.Text; namespace AngleSharp.Dom.Html { internal sealed class HtmlTemplateElement : HtmlElement, IHtmlTemplateElement, IHtmlElement, IElement, INode, IEventTarget, IParentNode, IChildNode, INonDocumentTypeChildNode, IElementCssInlineStyle { private readonly DocumentFragment _content; public IDocumentFragment Content => _content; public HtmlTemplateElement(Document owner) : base(owner, Tags.Template, NodeFlags.Special | NodeFlags.Scoped | NodeFlags.HtmlTableSectionScoped | NodeFlags.HtmlTableScoped) { _content = new DocumentFragment(owner); } public void PopulateFragment() { while (base.HasChildNodes) { Node node = base.ChildNodes[0]; RemoveNode(0, node); _content.AddNode(node); } } public override INode Clone(bool deep = true) { HtmlTemplateElement htmlTemplateElement = new HtmlTemplateElement(base.Owner); Node.CopyProperties(this, htmlTemplateElement, deep); Element.CopyAttributes(this, htmlTemplateElement); for (int i = 0; i < _content.ChildNodes.Length; i++) { Node node = _content.ChildNodes[i].Clone(deep) as Node; if (node != null) htmlTemplateElement._content.AddNode(node); } return htmlTemplateElement; } internal override void NodeIsAdopted(Document oldDocument) { _content.Owner = oldDocument; } public override string ToHtml() { StringBuilder stringBuilder = Pool.NewStringBuilder().Append('<').Append(base.NodeName); foreach (IAttr attribute in base.Attributes) { stringBuilder.Append(' ').Append(attribute.ToString()); } stringBuilder.Append('>'); stringBuilder.Append(_content.ChildNodes.ToHtml()); stringBuilder.Append('<').Append('/').Append(base.NodeName); return stringBuilder.Append('>').ToPool(); } } }