AngleSharp 文档中的一些说法
The Html Agility Pack (HAP) is a good comparison target, since it is most used and established since a long time. Obviously AngleSharp is a great replacement for HAP due to the following reasons:
Standardized HTML5 parsing model
Much better error correction / handling
Also parses SVG / MathML elements correctly
Can handle CSS (selectors, rules, ...)
Better performance
我来说一些我实际中遇到的一些细节差异
htmlagilitypack 可以直接让它去 load stream 它会自动按照 ASCII 的规则去读取 <meta charSet="xxx">标签然后按正确的编码读取,anglesharp 我记得好像没这个功能,不过我也不敢确定,因为这方面我没用过,我一般都是拿 github.com/errepi/ude 检测编码然后直接让各种 parser 去 load string,而不是用这些parser自带的编码检测。
htmlagilitypack 历史包袱很重,搞了一堆 flag 可以调整,我不是特别喜欢这些,感觉不是很透明。
AngleSharp 是完全按照标准来的,可以玩 xpath 也可以,htmlagilitypack 就只能 xpath 了。AngleSharp 甚至还可以用 jint 还可以拿来跑网页的 JavaScript(没搞过), 顺便吐槽一下我给jint提交的PR万年没人理。(划掉)
AngleSharp 如果再加上 Win2D 做一个简单的 HTML 文本显示,那么就可以用 anglesharp.css 去读取html element的style。不过如果你一个元素都去 ComputeCurrentStyle 的话,性能也确实不咋地。这方面我做了个小小的优化,有兴趣可以看看这个 yinyue200/AngleSharp.Css
AngleSharp 如果遇到不认识的标签不会认为标签是可以默认自闭合的,同时像title这样的标签也被 AngleSharp 被认为是不能自闭合。这也和目前的标准以及主流浏览器的实践相一致,但是和 htmlagilitypack 的处理方式是不一致的。如果有这方面的迁移需求的话我觉得需要注意这点。还有就是大小写处理方面二者略有不同,稍微注意一下即可。