AngleSharp by AngleSharp

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

 HtmlParser

Creates an instance of the HTML parser front-end.
using AngleSharp.Browser; using AngleSharp.Dom; using AngleSharp.Html.Dom; using AngleSharp.Html.Dom.Events; using AngleSharp.Text; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading; using System.Threading.Tasks; namespace AngleSharp.Html.Parser { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public class HtmlParser : EventTarget, IHtmlParser, IParser, IEventTarget { private readonly HtmlParserOptions _options; private readonly IBrowsingContext _context; public HtmlParserOptions Options => _options; public event DomEventHandler Parsing { add { AddEventListener(EventNames.Parsing, value, false); } remove { RemoveEventListener(EventNames.Parsing, value, false); } } public event DomEventHandler Parsed { add { AddEventListener(EventNames.Parsed, value, false); } remove { RemoveEventListener(EventNames.Parsed, value, false); } } public event DomEventHandler Error { add { AddEventListener(EventNames.Error, value, false); } remove { RemoveEventListener(EventNames.Error, value, false); } } public HtmlParser() : this(null) { } public HtmlParser(HtmlParserOptions options) : this(options, null) { } [System.Runtime.CompilerServices.NullableContext(2)] internal HtmlParser(IBrowsingContext context) : this(new HtmlParserOptions { IsScripting = (context != null && context.IsScripting()) }, context) { } [System.Runtime.CompilerServices.NullableContext(2)] public HtmlParser(HtmlParserOptions options, IBrowsingContext context) { _options = options; _context = (context ?? BrowsingContext.NewFrom((IHtmlParser)this)); } public IHtmlDocument ParseDocument(string source) { HtmlDocument document = CreateDocument(source); return Parse(document, null); } [return: System.Runtime.CompilerServices.Nullable(2)] public IHtmlHeadElement ParseHead(string source) { HtmlDocument document = CreateDocument(source); return Parse(document, TagNames.Head).Head; } public INodeList ParseFragment(Stream source, IElement contextElement) { HtmlDocument document = CreateDocument(source); return ParseFragment(document, contextElement); } public INodeList ParseFragment(string source, IElement contextElement) { HtmlDocument document = CreateDocument(source); return ParseFragment(document, contextElement); } public IHtmlDocument ParseDocument(Stream source) { HtmlDocument document = CreateDocument(source); return Parse(document, null); } [return: System.Runtime.CompilerServices.Nullable(2)] public IHtmlHeadElement ParseHead(Stream source) { HtmlDocument document = CreateDocument(source); return Parse(document, TagNames.Head).Head; } public Task<IHtmlDocument> ParseDocumentAsync(string source, CancellationToken cancel) { HtmlDocument document = CreateDocument(source); return ParseAsync(document, cancel, null); } public Task<IHtmlDocument> ParseDocumentAsync(Stream source, CancellationToken cancel) { HtmlDocument document = CreateDocument(source); return ParseAsync(document, cancel, null); } [AsyncStateMachine(typeof(<ParseHeadAsync>d__25))] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] public Task<IHtmlHeadElement> ParseHeadAsync(string source, CancellationToken cancel) { <ParseHeadAsync>d__25 stateMachine = default(<ParseHeadAsync>d__25); stateMachine.<>t__builder = AsyncTaskMethodBuilder<IHtmlHeadElement>.Create(); stateMachine.<>4__this = this; stateMachine.source = source; stateMachine.cancel = cancel; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<ParseHeadAsync>d__26))] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] public Task<IHtmlHeadElement> ParseHeadAsync(Stream source, CancellationToken cancel) { <ParseHeadAsync>d__26 stateMachine = default(<ParseHeadAsync>d__26); stateMachine.<>t__builder = AsyncTaskMethodBuilder<IHtmlHeadElement>.Create(); stateMachine.<>4__this = this; stateMachine.source = source; stateMachine.cancel = cancel; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<AngleSharp-Html-Parser-IHtmlParser-ParseDocumentAsync>d__27))] Task<IDocument> IHtmlParser.ParseDocumentAsync(IDocument document, CancellationToken cancel) { <AngleSharp-Html-Parser-IHtmlParser-ParseDocumentAsync>d__27 stateMachine = default(<AngleSharp-Html-Parser-IHtmlParser-ParseDocumentAsync>d__27); stateMachine.<>t__builder = AsyncTaskMethodBuilder<IDocument>.Create(); stateMachine.<>4__this = this; stateMachine.document = document; stateMachine.cancel = cancel; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } private HtmlDocument CreateDocument(string source) { TextSource textSource = new TextSource(source); return CreateDocument(textSource); } private HtmlDocument CreateDocument(Stream source) { Encoding defaultEncoding = _context.GetDefaultEncoding(); TextSource textSource = new TextSource(source, defaultEncoding); return CreateDocument(textSource); } private HtmlDocument CreateDocument(TextSource textSource) { return new HtmlDocument(_context, textSource); } private HtmlDomBuilder CreateBuilder(HtmlDocument document, [System.Runtime.CompilerServices.Nullable(2)] string stopAt) { HtmlDomBuilder htmlDomBuilder = new HtmlDomBuilder(document, stopAt); if (HasEventListener(EventNames.Error)) htmlDomBuilder.Error += delegate(object _, HtmlErrorEvent ev) { InvokeEventListener(ev); }; return htmlDomBuilder; } private IHtmlDocument Parse(HtmlDocument document, [System.Runtime.CompilerServices.Nullable(2)] string stopAt = null) { HtmlDomBuilder htmlDomBuilder = CreateBuilder(document, stopAt); InvokeHtmlParseEvent(document, false); htmlDomBuilder.Parse(_options); InvokeHtmlParseEvent(document, true); return document; } [AsyncStateMachine(typeof(<ParseAsync>d__33))] private Task<IHtmlDocument> ParseAsync(HtmlDocument document, CancellationToken cancel, [System.Runtime.CompilerServices.Nullable(2)] string stopAt = null) { <ParseAsync>d__33 stateMachine = default(<ParseAsync>d__33); stateMachine.<>t__builder = AsyncTaskMethodBuilder<IHtmlDocument>.Create(); stateMachine.<>4__this = this; stateMachine.document = document; stateMachine.cancel = cancel; stateMachine.stopAt = stopAt; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private void InvokeHtmlParseEvent(HtmlDocument document, bool completed) { if (base.HasEventListeners) InvokeEventListener(new HtmlParseEvent(document, completed)); } private INodeList ParseFragment(HtmlDocument document, IElement contextElement) { HtmlDomBuilder htmlDomBuilder = new HtmlDomBuilder(document, null); Element element = contextElement as Element; if (element != null) { element = document.CreateElementFrom(element.LocalName, element.Prefix, NodeFlags.None); IElement documentElement = htmlDomBuilder.ParseFragment(_options, element).DocumentElement; element.AppendNodes(documentElement.ChildNodes.ToArray()); return element.ChildNodes; } return htmlDomBuilder.Parse(_options).ChildNodes; } } }