AngleSharp by Florian Rappl

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

.NET API 553,472 bytes

 HTMLDocument

Represents an HTML document.
using AngleSharp.DOM.Collections; using AngleSharp.Html; using System; using System.Collections.Generic; using System.IO; namespace AngleSharp.DOM.Html { [DOM("HTMLDocument")] public sealed class HTMLDocument : Document, IHTMLDocument, IDocument, INode, IQueryElements { private bool _embedded; private bool _scripting; private HTMLLiveCollection<Element> _all; private HTMLLiveCollection<HTMLFormElement> _forms; private HTMLLiveCollection<HTMLScriptElement> _scripts; private HTMLLiveCollection<HTMLImageElement> _images; private HTMLLiveCollectionWithAttr<HTMLAnchorElement> _anchors; private HTMLLiveCollection<HTMLEmbedElement, HTMLObjectElement, HTMLAppletElement> _embeds; private HTMLLiveCollectionWithAttr<HTMLAnchorElement, HTMLAreaElement> _links; public HTMLCollection All => _all; [DOM("anchors")] public HTMLCollection Anchors { get { return _anchors ?? new HTMLLiveCollectionWithAttr<HTMLAnchorElement>(this, "name"); } } public DirectionMode Dir { get { return base.DocumentElement?.Dir ?? DirectionMode.Ltr; } set { Element documentElement = base.DocumentElement; if (documentElement != null) documentElement.Dir = value; } } [DOM("forms")] public HTMLCollection Forms { get { return _forms ?? (_forms = new HTMLLiveCollection<HTMLFormElement>(this, true)); } } [DOM("images")] public HTMLCollection Images { get { return _images ?? (_images = new HTMLLiveCollection<HTMLImageElement>(this, true)); } } [DOM("scripts")] public HTMLCollection Scripts { get { return _scripts ?? (_scripts = new HTMLLiveCollection<HTMLScriptElement>(this, true)); } } [DOM("embeds")] public HTMLCollection Embeds { get { return _embeds ?? new HTMLLiveCollection<HTMLEmbedElement, HTMLObjectElement, HTMLAppletElement>(this, true); } } [DOM("links")] public HTMLCollection Links { get { return _links ?? new HTMLLiveCollectionWithAttr<HTMLAnchorElement, HTMLAreaElement>(this, "href"); } } [DOM("title")] public string Title { get { HTMLTitleElement hTMLTitleElement = Document.FindChild<HTMLTitleElement>(Head); if (hTMLTitleElement != null) return hTMLTitleElement.Text; return string.Empty; } set { HTMLTitleElement hTMLTitleElement = Document.FindChild<HTMLTitleElement>(Head); if (hTMLTitleElement == null) { Element element = base.DocumentElement; if (element == null) { element = new HTMLHtmlElement(); AppendChild(element); } HTMLHeadElement hTMLHeadElement = Head; if (hTMLHeadElement == null) { hTMLHeadElement = new HTMLHeadElement(); element.AppendChild(hTMLHeadElement); } hTMLTitleElement = new HTMLTitleElement(); hTMLHeadElement.AppendChild(hTMLTitleElement); } hTMLTitleElement.Text = value; } } [DOM("head")] public HTMLHeadElement Head { get { return Document.FindChild<HTMLHeadElement>(base.DocumentElement); } } [DOM("body")] public HTMLBodyElement Body { get { return Document.FindChild<HTMLBodyElement>(base.DocumentElement); } } [DOM("compatMode")] public string CompatMode { get { if (base.QuirksMode != QuirksMode.On) return "CSS1Compat"; return "BackCompat"; } } [DOM("cookie")] public Cookie Cookie { get { return null; } set { } } [DOM("domain")] public string Domain { get { if (!string.IsNullOrEmpty(base.DocumentURI)) return new Uri(base.DocumentURI).Host; return string.Empty; } } [DOM("URL")] public string URL { get { return base.DocumentURI; } } internal bool IsEmbedded { get { return _embedded; } set { _embedded = value; } } internal bool IsScripting { get { return _scripting; } set { _scripting = value; } } internal int ScriptsWaiting => 0; internal int ScriptsAsSoonAsPossible => 0; internal bool IsLoadingDelayed => false; internal bool IsInBrowsingContext => false; internal bool IsToBePrinted { get; set; } [DOM("onabort")] internal event EventHandler OnAbort; [DOM("onblur")] internal event EventHandler OnBlur; [DOM("oncanplay")] internal event EventHandler OnCanPlay; [DOM("oncanplaythrough")] internal event EventHandler OnCanPlayThrough; [DOM("onchange")] internal event EventHandler OnChange; [DOM("onclick")] internal event EventHandler OnClick; [DOM("oncontextmenu")] internal event EventHandler OnContextMenu; [DOM("oncopy")] internal event EventHandler OnCopy; [DOM("oncuechange")] internal event EventHandler OnCueChange; [DOM("oncut")] internal event EventHandler OnCut; [DOM("ondblclick")] internal event EventHandler OnDblClick; [DOM("onaondragbort")] internal event EventHandler OnDrag; [DOM("ondragend")] internal event EventHandler OnDragEnd; [DOM("ondragenter")] internal event EventHandler OnDragEnter; [DOM("ondragleave")] internal event EventHandler OnDragLeave; [DOM("ondragover")] internal event EventHandler OnDragOver; [DOM("ondragstart")] internal event EventHandler OnDragStart; [DOM("ondrop")] internal event EventHandler OnDrop; [DOM("ondurationchange")] internal event EventHandler OnDurationChange; [DOM("onemptied")] internal event EventHandler OnEmptied; [DOM("onended")] internal event EventHandler OnEnded; [DOM("onerror")] internal event EventHandler OnError; [DOM("onfocus")] internal event EventHandler OnFocus; [DOM("onfocusin")] internal event EventHandler OnFocusIn; [DOM("onfocusout")] internal event EventHandler OnFocusOut; [DOM("onfullscreenchange")] internal event EventHandler OnFullScreenChange; [DOM("onfullscreenerror")] internal event EventHandler OnFullScreenError; [DOM("oninput")] internal event EventHandler OnInput; [DOM("oninvalid")] internal event EventHandler OnInvalid; [DOM("onkeydown")] internal event EventHandler OnKeyDown; [DOM("onkeypress")] internal event EventHandler OnKeyPress; [DOM("onkeyup")] internal event EventHandler OnKeyUp; [DOM("onload")] internal event EventHandler OnLoad; [DOM("onloadeddata")] internal event EventHandler OnLoadedData; [DOM("onloadedmetadata")] internal event EventHandler OnLoadedMetaData; [DOM("onloadstart")] internal event EventHandler OnLoadStart; [DOM("onmousedown")] internal event EventHandler OnMouseDown; [DOM("onmousemove")] internal event EventHandler OnMouseMove; [DOM("onmouseout")] internal event EventHandler OnMouseOut; [DOM("onmouseover")] internal event EventHandler OnMouseOver; [DOM("onmouseup")] internal event EventHandler OnMouseUp; [DOM("onmousewheel")] internal event EventHandler OnMouseWheel; [DOM("onpaste")] internal event EventHandler OnPaste; [DOM("onpause")] internal event EventHandler OnPause; [DOM("onplay")] internal event EventHandler OnPlay; [DOM("onplaying")] internal event EventHandler OnPlaying; [DOM("onprogress")] internal event EventHandler OnProgress; [DOM("onratechange")] internal event EventHandler OnRateChange; [DOM("onreset")] internal event EventHandler OnReset; [DOM("onscroll")] internal event EventHandler OnScroll; [DOM("onseeked")] internal event EventHandler OnSeeked; [DOM("onseeking")] internal event EventHandler OnSeeking; [DOM("onselect")] internal event EventHandler OnSelect; [DOM("onstalled")] internal event EventHandler OnStalled; [DOM("onsubmit")] internal event EventHandler OnSubmit; [DOM("onsuspend")] internal event EventHandler OnSuspend; [DOM("ontimeout")] internal event EventHandler OnTimeOut; [DOM("ontimeupdate")] internal event EventHandler OnTimeUpdate; [DOM("ontouchcancel")] internal event EventHandler OnTouchCancel; [DOM("ontouchend")] internal event EventHandler OnTouchEnd; [DOM("ontouchmove")] internal event EventHandler OnTouchMove; [DOM("ontouchstart")] internal event EventHandler OnTouchStart; [DOM("onvolumechange")] internal event EventHandler OnVolumeChange; [DOM("onwaiting")] internal event EventHandler OnWaiting; internal HTMLDocument() { _contentType = MimeTypes.Xml; _ns = Namespaces.Html; _all = new HTMLLiveCollection<Element>(this, true); } public static HTMLDocument LoadFromURL(string url) { HTMLDocument hTMLDocument = new HTMLDocument(); return hTMLDocument.Load(url); } public static HTMLDocument LoadFromSource(string source) { return DocumentBuilder.Html(source); } [DOM("load")] public HTMLDocument Load(string url) { _location = url; Cookie = new Cookie(); for (int i = _children.Length - 1; i >= 0; i++) { RemoveChild(_children[i]); } base.ReadyState = Readiness.Loading; base.QuirksMode = QuirksMode.Off; Stream stream = Builder.Stream(url); SourceManager source = new SourceManager(stream); HtmlParser htmlParser = new HtmlParser(this, source); return htmlParser.Result; } [DOM("cloneNode")] public override Node CloneNode(bool deep = true) { HTMLDocument hTMLDocument = new HTMLDocument(); Node.CopyProperties(this, hTMLDocument, deep); Document.CopyDocumentProperties(this, hTMLDocument, deep); hTMLDocument._embedded = _embedded; hTMLDocument._scripting = _scripting; return hTMLDocument; } [DOM("adoptNode")] public Node AdoptNode(Node externalNode) { if (externalNode.OwnerDocument != null && externalNode.ParentNode != null) externalNode.ParentNode.RemoveChild(externalNode); externalNode.OwnerDocument = this; return externalNode; } [DOM("open")] public HTMLDocument Open() { return this; } [DOM("close")] public HTMLDocument Close() { return this; } [DOM("write")] public HTMLDocument Write(string content) { return this; } [DOM("writeln")] public HTMLDocument WriteLn(string content) { return Write(content + '\n'); } [DOM("createElement")] public override Element CreateElement(string tagName) { HTMLElement hTMLElement = HTMLElement.Create(tagName.ToLower()); hTMLElement.OwnerDocument = this; return hTMLElement; } [DOM("createCDATASection")] public override CDATASection CreateCDATASection(string data) { throw new DOMException(ErrorCode.NotSupported); } [DOM("getElementsByName")] public HTMLCollection GetElementsByName(string name) { List<Element> list = new List<Element>(); GetElementsByName(_children, name, list); return new HTMLStaticCollection(list); } internal void SpinEventLoop() { } internal void RaiseDomContentLoaded() { } internal void RaiseLoadedEvent() { } internal void QueueTask(Action action) { } internal void Print() { } private void GetElementsByName(NodeList children, string name, List<Element> result) { for (int i = 0; i < _children.Length; i++) { if (children[i] is HTMLElement) { HTMLElement hTMLElement = (HTMLElement)children[i]; if (hTMLElement.GetAttribute("name") == name) result.Add(hTMLElement); GetElementsByName(hTMLElement.ChildNodes, name, result); } } } } }