DocumentFragment
sealed class DocumentFragment : Node, IDocumentFragment, INode, IEventTarget, IMarkupFormattable, IParentNode, INonElementParentNode
Represents a document fragment.
using AngleSharp.Text;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
namespace AngleSharp.Dom
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
internal sealed class DocumentFragment : Node, IDocumentFragment, INode, IEventTarget, IMarkupFormattable, IParentNode, INonElementParentNode
{
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
private HtmlCollection<IElement> _elements;
public int ChildElementCount => base.ChildNodes.OfType<Element>().Count();
public IHtmlCollection<IElement> Children => _elements ?? (_elements = new HtmlCollection<IElement>(this, false, null));
[System.Runtime.CompilerServices.Nullable(2)]
public IElement FirstElementChild {
[System.Runtime.CompilerServices.NullableContext(2)]
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;
}
}
[System.Runtime.CompilerServices.Nullable(2)]
public IElement LastElementChild {
[System.Runtime.CompilerServices.NullableContext(2)]
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 = StringBuilderPool.Obtain();
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 contextElement, string html)
: this(contextElement.Owner)
{
IElement element = contextElement.ParseSubtree(html);
while (element.HasChildNodes) {
INode firstChild = element.FirstChild;
element.RemoveChild(firstChild);
Node node = firstChild as Node;
if (node != null) {
base.Owner.AdoptNode(firstChild);
InsertBefore(node, null, false);
}
}
}
public void Prepend(params INode[] nodes)
{
this.PrependNodes(nodes);
}
public void Append(params INode[] nodes)
{
this.AppendNodes(nodes);
}
[return: System.Runtime.CompilerServices.Nullable(2)]
public IElement QuerySelector(string selectors)
{
return base.ChildNodes.QuerySelector(selectors, null);
}
public IHtmlCollection<IElement> QuerySelectorAll(string selectors)
{
return base.ChildNodes.QuerySelectorAll(selectors, null);
}
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([System.Runtime.CompilerServices.Nullable(2)] string namespaceURI, string tagName)
{
return base.ChildNodes.GetElementsByTagName(namespaceURI, tagName);
}
[return: System.Runtime.CompilerServices.Nullable(2)]
public IElement GetElementById(string elementId)
{
return base.ChildNodes.GetElementById(elementId);
}
public override Node Clone(Document owner, bool deep)
{
DocumentFragment documentFragment = new DocumentFragment(owner);
CloneNode(documentFragment, owner, deep);
return documentFragment;
}
}
}