AngleSharp by AngleSharp

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

 HtmlElementFactory

Provides string to HTMLElement instance creation mappings.
using AngleSharp.Dom; using AngleSharp.Dom.Html; using AngleSharp.Html; using System; using System.Collections.Generic; namespace AngleSharp.Services.Default { internal sealed class HtmlElementFactory : IElementFactory<HtmlElement> { private delegate HtmlElement Creator (Document owner, string prefix); private readonly Dictionary<string, Creator> creators = new Dictionary<string, Creator>(StringComparer.OrdinalIgnoreCase) { { TagNames.Div, (Document document, string prefix) => new HtmlDivElement(document, prefix) }, { TagNames.A, (Document document, string prefix) => new HtmlAnchorElement(document, prefix) }, { TagNames.Img, (Document document, string prefix) => new HtmlImageElement(document, prefix) }, { TagNames.P, (Document document, string prefix) => new HtmlParagraphElement(document, prefix) }, { TagNames.Br, (Document document, string prefix) => new HtmlBreakRowElement(document, prefix) }, { TagNames.Input, (Document document, string prefix) => new HtmlInputElement(document, prefix) }, { TagNames.Button, (Document document, string prefix) => new HtmlButtonElement(document, prefix) }, { TagNames.Textarea, (Document document, string prefix) => new HtmlTextAreaElement(document, prefix) }, { TagNames.Li, (Document document, string prefix) => new HtmlListItemElement(document, TagNames.Li, prefix) }, { TagNames.H1, (Document document, string prefix) => new HtmlHeadingElement(document, TagNames.H1, prefix) }, { TagNames.H2, (Document document, string prefix) => new HtmlHeadingElement(document, TagNames.H2, prefix) }, { TagNames.H3, (Document document, string prefix) => new HtmlHeadingElement(document, TagNames.H3, prefix) }, { TagNames.H4, (Document document, string prefix) => new HtmlHeadingElement(document, TagNames.H4, prefix) }, { TagNames.H5, (Document document, string prefix) => new HtmlHeadingElement(document, TagNames.H5, prefix) }, { TagNames.H6, (Document document, string prefix) => new HtmlHeadingElement(document, TagNames.H6, prefix) }, { TagNames.Ul, (Document document, string prefix) => new HtmlUnorderedListElement(document, prefix) }, { TagNames.Ol, (Document document, string prefix) => new HtmlOrderedListElement(document, prefix) }, { TagNames.Dl, (Document document, string prefix) => new HtmlDefinitionListElement(document, prefix) }, { TagNames.Link, (Document document, string prefix) => new HtmlLinkElement(document, prefix) }, { TagNames.Meta, (Document document, string prefix) => new HtmlMetaElement(document, prefix) }, { TagNames.Label, (Document document, string prefix) => new HtmlLabelElement(document, prefix) }, { TagNames.Fieldset, (Document document, string prefix) => new HtmlFieldSetElement(document, prefix) }, { TagNames.Legend, (Document document, string prefix) => new HtmlLegendElement(document, prefix) }, { TagNames.Form, (Document document, string prefix) => new HtmlFormElement(document, prefix) }, { TagNames.Select, (Document document, string prefix) => new HtmlSelectElement(document, prefix) }, { TagNames.Pre, (Document document, string prefix) => new HtmlPreElement(document, prefix) }, { TagNames.Hr, (Document document, string prefix) => new HtmlHrElement(document, prefix) }, { TagNames.Dir, (Document document, string prefix) => new HtmlDirectoryElement(document, prefix) }, { TagNames.Font, (Document document, string prefix) => new HtmlFontElement(document, prefix) }, { TagNames.Param, (Document document, string prefix) => new HtmlParamElement(document, prefix) }, { TagNames.BlockQuote, (Document document, string prefix) => new HtmlQuoteElement(document, TagNames.BlockQuote, prefix) }, { TagNames.Quote, (Document document, string prefix) => new HtmlQuoteElement(document, TagNames.Quote, prefix) }, { TagNames.Q, (Document document, string prefix) => new HtmlQuoteElement(document, TagNames.Q, prefix) }, { TagNames.Canvas, (Document document, string prefix) => new HtmlCanvasElement(document, prefix) }, { TagNames.Caption, (Document document, string prefix) => new HtmlTableCaptionElement(document, prefix) }, { TagNames.Td, (Document document, string prefix) => new HtmlTableDataCellElement(document, prefix) }, { TagNames.Tr, (Document document, string prefix) => new HtmlTableRowElement(document, prefix) }, { TagNames.Table, (Document document, string prefix) => new HtmlTableElement(document, prefix) }, { TagNames.Tbody, (Document document, string prefix) => new HtmlTableSectionElement(document, TagNames.Tbody, prefix) }, { TagNames.Th, (Document document, string prefix) => new HtmlTableHeaderCellElement(document, prefix) }, { TagNames.Tfoot, (Document document, string prefix) => new HtmlTableSectionElement(document, TagNames.Tfoot, prefix) }, { TagNames.Thead, (Document document, string prefix) => new HtmlTableSectionElement(document, TagNames.Thead, prefix) }, { TagNames.Colgroup, (Document document, string prefix) => new HtmlTableColgroupElement(document, prefix) }, { TagNames.Col, (Document document, string prefix) => new HtmlTableColElement(document, prefix) }, { TagNames.Del, (Document document, string prefix) => new HtmlModElement(document, TagNames.Del, prefix) }, { TagNames.Ins, (Document document, string prefix) => new HtmlModElement(document, TagNames.Ins, prefix) }, { TagNames.Applet, (Document document, string prefix) => new HtmlAppletElement(document, prefix) }, { TagNames.Object, (Document document, string prefix) => new HtmlObjectElement(document, prefix) }, { TagNames.Optgroup, (Document document, string prefix) => new HtmlOptionsGroupElement(document, prefix) }, { TagNames.Option, (Document document, string prefix) => new HtmlOptionElement(document, prefix) }, { TagNames.Style, (Document document, string prefix) => new HtmlStyleElement(document, prefix) }, { TagNames.Script, (Document document, string prefix) => new HtmlScriptElement(document, prefix, false, false) }, { TagNames.Iframe, (Document document, string prefix) => new HtmlIFrameElement(document, prefix) }, { TagNames.Dd, (Document document, string prefix) => new HtmlListItemElement(document, TagNames.Dd, prefix) }, { TagNames.Dt, (Document document, string prefix) => new HtmlListItemElement(document, TagNames.Dt, prefix) }, { TagNames.Frameset, (Document document, string prefix) => new HtmlFrameSetElement(document, prefix) }, { TagNames.Frame, (Document document, string prefix) => new HtmlFrameElement(document, prefix) }, { TagNames.Audio, (Document document, string prefix) => new HtmlAudioElement(document, prefix) }, { TagNames.Video, (Document document, string prefix) => new HtmlVideoElement(document, prefix) }, { TagNames.Span, (Document document, string prefix) => new HtmlSpanElement(document, prefix) }, { TagNames.Dialog, (Document document, string prefix) => new HtmlDialogElement(document, prefix) }, { TagNames.Details, (Document document, string prefix) => new HtmlDetailsElement(document, prefix) }, { TagNames.Source, (Document document, string prefix) => new HtmlSourceElement(document, prefix) }, { TagNames.Track, (Document document, string prefix) => new HtmlTrackElement(document, prefix) }, { TagNames.Wbr, (Document document, string prefix) => new HtmlWbrElement(document, prefix) }, { TagNames.B, (Document document, string prefix) => new HtmlBoldElement(document, prefix) }, { TagNames.Big, (Document document, string prefix) => new HtmlBigElement(document, prefix) }, { TagNames.Strike, (Document document, string prefix) => new HtmlStrikeElement(document, prefix) }, { TagNames.Code, (Document document, string prefix) => new HtmlCodeElement(document, prefix) }, { TagNames.Em, (Document document, string prefix) => new HtmlEmphasizeElement(document, prefix) }, { TagNames.I, (Document document, string prefix) => new HtmlItalicElement(document, prefix) }, { TagNames.S, (Document document, string prefix) => new HtmlStruckElement(document, prefix) }, { TagNames.Small, (Document document, string prefix) => new HtmlSmallElement(document, prefix) }, { TagNames.Strong, (Document document, string prefix) => new HtmlStrongElement(document, prefix) }, { TagNames.U, (Document document, string prefix) => new HtmlUnderlineElement(document, prefix) }, { TagNames.Tt, (Document document, string prefix) => new HtmlTeletypeTextElement(document, prefix) }, { TagNames.Address, (Document document, string prefix) => new HtmlAddressElement(document, prefix) }, { TagNames.Main, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Main, prefix) }, { TagNames.Summary, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Summary, prefix) }, { TagNames.Center, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Center, prefix) }, { TagNames.Listing, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Listing, prefix) }, { TagNames.Nav, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Nav, prefix) }, { TagNames.Article, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Article, prefix) }, { TagNames.Aside, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Aside, prefix) }, { TagNames.Figcaption, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Figcaption, prefix) }, { TagNames.Figure, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Figure, prefix) }, { TagNames.Section, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Section, prefix) }, { TagNames.Footer, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Footer, prefix) }, { TagNames.Header, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Header, prefix) }, { TagNames.Hgroup, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Hgroup, prefix) }, { TagNames.Cite, (Document document, string prefix) => new HtmlElement(document, TagNames.Cite, prefix, NodeFlags.None) }, { TagNames.Ruby, (Document document, string prefix) => new HtmlRubyElement(document, prefix) }, { TagNames.Rt, (Document document, string prefix) => new HtmlRtElement(document, prefix) }, { TagNames.Rp, (Document document, string prefix) => new HtmlRpElement(document, prefix) }, { TagNames.Rtc, (Document document, string prefix) => new HtmlRtcElement(document, prefix) }, { TagNames.Rb, (Document document, string prefix) => new HtmlRbElement(document, prefix) }, { TagNames.Map, (Document document, string prefix) => new HtmlMapElement(document, prefix) }, { TagNames.Datalist, (Document document, string prefix) => new HtmlDataListElement(document, prefix) }, { TagNames.Xmp, (Document document, string prefix) => new HtmlXmpElement(document, prefix) }, { TagNames.Picture, (Document document, string prefix) => new HtmlPictureElement(document, prefix) }, { TagNames.Template, (Document document, string prefix) => new HtmlTemplateElement(document, prefix) }, { TagNames.Time, (Document document, string prefix) => new HtmlTimeElement(document, prefix) }, { TagNames.Progress, (Document document, string prefix) => new HtmlProgressElement(document, prefix) }, { TagNames.Meter, (Document document, string prefix) => new HtmlMeterElement(document, prefix) }, { TagNames.Output, (Document document, string prefix) => new HtmlOutputElement(document, prefix) }, { TagNames.Keygen, (Document document, string prefix) => new HtmlKeygenElement(document, prefix) }, { TagNames.Title, (Document document, string prefix) => new HtmlTitleElement(document, prefix) }, { TagNames.Head, (Document document, string prefix) => new HtmlHeadElement(document, prefix) }, { TagNames.Body, (Document document, string prefix) => new HtmlBodyElement(document, prefix) }, { TagNames.Html, (Document document, string prefix) => new HtmlHtmlElement(document, prefix) }, { TagNames.Area, (Document document, string prefix) => new HtmlAreaElement(document, prefix) }, { TagNames.Embed, (Document document, string prefix) => new HtmlEmbedElement(document, prefix) }, { TagNames.MenuItem, (Document document, string prefix) => new HtmlMenuItemElement(document, prefix) }, { TagNames.Slot, (Document document, string prefix) => new HtmlSlotElement(document, prefix) }, { TagNames.NoScript, (Document document, string prefix) => new HtmlNoScriptElement(document, prefix) }, { TagNames.NoEmbed, (Document document, string prefix) => new HtmlNoEmbedElement(document, prefix) }, { TagNames.NoFrames, (Document document, string prefix) => new HtmlNoFramesElement(document, prefix) }, { TagNames.NoBr, (Document document, string prefix) => new HtmlNoNewlineElement(document, prefix) }, { TagNames.Menu, (Document document, string prefix) => new HtmlMenuElement(document, prefix) }, { TagNames.Base, (Document document, string prefix) => new HtmlBaseElement(document, prefix) }, { TagNames.BaseFont, (Document document, string prefix) => new HtmlBaseFontElement(document, prefix) }, { TagNames.Bgsound, (Document document, string prefix) => new HtmlBgsoundElement(document, prefix) }, { TagNames.Marquee, (Document document, string prefix) => new HtmlMarqueeElement(document, prefix) }, { TagNames.Data, (Document document, string prefix) => new HtmlDataElement(document, prefix) }, { TagNames.Plaintext, (Document document, string prefix) => new HtmlSemanticElement(document, TagNames.Plaintext, prefix) }, { TagNames.IsIndex, (Document document, string prefix) => new HtmlIsIndexElement(document, prefix) } }; public HtmlElement Create(Document document, string localName, string prefix = null) { Creator value = null; if (creators.TryGetValue(localName, out value)) return value(document, prefix); return new HtmlUnknownElement(document, localName.ToLowerInvariant(), prefix); } } }