AngleSharp by Florian Rappl

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

.NET API 886,784 bytes

 HTMLTemplateElement

Represents the template element.
using AngleSharp.DOM.Css; 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() : base(Tags.Template, NodeFlags.Special | NodeFlags.Scoped | NodeFlags.HtmlTableSectionScoped | NodeFlags.HtmlTableScoped) { _content = new DocumentFragment { Owner = base.Owner }; } public override INode Clone(bool deep = true) { HTMLTemplateElement hTMLTemplateElement = new HTMLTemplateElement(); 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; } internal override void Close() { base.Close(); while (base.HasChilds) { Node node = base.ChildNodes[0]; RemoveNode(0, node); _content.AddNode(node); } } public override string ToHtml() { StringBuilder stringBuilder = Pool.NewStringBuilder(); stringBuilder.Append('<').Append(base.NodeName); foreach (IAttr attribute in base.Attributes) { stringBuilder.Append(' ').Append(attribute.ToString()); } stringBuilder.Append('>'); foreach (INode childNode in Content.ChildNodes) { stringBuilder.Append(childNode.ToHtml()); } stringBuilder.Append('<').Append('/').Append(base.NodeName); return stringBuilder.Append('>').ToPool(); } } }