• 浅谈 AngleSharp 与 htmlagilitypack 的一些区别


    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 我记得好像没这个功能,不过我也不敢确定,因为这方面我没用过,我一般都是拿 检测编码然后直接让各种 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 的处理方式是不一致的。如果有这方面的迁移需求的话我觉得需要注意这点。还有就是大小写处理方面二者略有不同,稍微注意一下即可。

  • 相关阅读:
    bzoj 3438 小M的作物
    洛谷 1126 机器人搬重物
    hdu 4055 Number String
    顺序对齐
    codevs 1300 文件排版
    NOIP 2015 提高组 Day2
    poj 2484 A Funny Game
    51nod 1548 欧姆诺姆和糖果 (制约关系优化枚举)
    hdu 1907 John (anti—Nim)
    hdu 2516 取石子游戏 (斐波那契博弈)
  • 原文地址:https://www.cnblogs.com/yinyue200/p/13521242.html
Copyright © 2020-2023  润新知