A parse for HTML5 based on the official W3C specification.
the html source text is:
<!DOCTYPE html><html><head><metacharset="utf-8"><title>My test page</title></head><body><imgsrc="images/firefox-icon.png" alt="My test image"></body></html>we can use this code to parse html source to HtmlNode list:
letsourceText=<html>...</html>letnodes:HtmlNode list = HtmlUtils.parseDoc sourceTextdoctype is a string that is extracted from doctype tag. and nodes is a HtmlNode list.
typeHtmlNode=| HtmlElement of
name: string *
attributes: list<string * string>*
elements: HtmlNode list
| HtmlComment ofstring| HtmlCData ofstring| HtmlText ofstring| HtmlDoctype ofstring| HtmlWS ofstringAll parsing processes in a package are public, and you are free to compose them to implement your functional requirements. Parser is highly configurable, see source code HtmlUtils
moduleFSharp.HTML.HtmlUtilsletparseDoc(txt:string)=
txt
|> HtmlCompiler.compileText
|> Whitespace.trimWhitespace
|> List.map CharacterReference.processCharRefsThe user can parse the string through the functions in the HtmlUtils module.
EncodeUtils