htmlagilitypack_浅谈 AngleSharp 与 htmlagilitypack 的一些区别

741f57f40f5faafee97f195d5b0e4d64.png

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 我记得好像没这个功能,不过我也不敢确定,因为这方面我没用过,我一般都是拿 https://github.com/errepi/ude 检测编码然后直接让各种 parser 去 load string,而不是用这些parser自带的编码检测。

htmlagilitypack 历史包袱很重,搞了一堆 flag 可以调整,我不是特别喜欢这些,感觉不是很透明。

AngleSharp 是完全按照标准来的,可以玩 CSS selector,想玩 xpath 也可以,htmlagilitypack 就只能 xpath 了。AngleSharp 甚至还可以用 jint 还可以拿来跑网页的 JavaScript(没搞过), 顺便吐槽一下我给jint提交的PR万年没人理。(划掉)

AngleSharp 如果再加上 AngleSharp.Css 可玩性就更大了,比如你可以用 Win2D 做一个简单的 HTML 文本显示,那么就可以用 anglesharp.css 去读取html element的style。不过如果你一个元素都去 ComputeCurrentStyle 的话,性能也确实不咋地。这方面我做了个小小的优化,有兴趣可以看看这个 yinyue200/AngleSharp.Css

AngleSharp 如果遇到不认识的标签不会认为标签是可以默认自闭合的,同时像title这样的标签也被 AngleSharp 被认为是不能自闭合。这也和目前的标准以及主流浏览器的实践相一致,但是和 htmlagilitypack 的处理方式是不一致的。如果有这方面的迁移需求的话我觉得需要注意这点。还有就是大小写处理方面二者略有不同,稍微注意一下即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值