Html Agility Parse Errors属性

时间:2011-03-19 20:26:36

标签: html-agility-pack

我希望修复HtmlAgility库有什么错误?根据我自己的经验,我知道它可以关闭一个缺失的标签,例如:

<car>Nissan</car

什么时候加载或LoadHtml,它会修复它,如:

<car>Nissan</car>

我也知道ParseErorrs集合可以确定Reason,Stream等。

是否存在错误列表(或者您可以根据自己的经验判断)HtmlAgility修复错误的可靠性以及HtmlAgility无法解决哪些错误?

1 个答案:

答案 0 :(得分:5)

从历史上看,Html Agility Pack从未设计为修复 Html,而是能够加载,修改和修改。保存回来,即使这个Html有错误。

这意味着它将修复一般由浏览器自动修复的错误,例如您在问题中显示的错误。错误列表已通过实验确定,您可以浏览源代码以获得有关它的深入见解。话虽这么说,它实际上是在2000/2001年设计的,所以在这方面可能会发生变化: - )

ParseErrors集合将包含带代码的HtmlParseError对象。代码是一个记录的枚举:

    /// A tag was not closed.
    TagNotClosed,

    /// A tag was not opened.
    TagNotOpened,

    /// There is a charset mismatch between stream and declared (META) encoding.
    CharsetMismatch,

    /// An end tag was not required.
    EndTagNotRequired,

    /// An end tag is invalid at this position.
    EndTagInvalidHere

HtmlDocument上还有一个OptionFixNestedTags属性(默认值为false),能够在检测到嵌套错误时修复LI,TR,TH,TD标记。这意味着如果它在没有所需的关闭TD的情况下检测到关闭TR,它们将自动关闭。同样,这正是浏览器将对格式错误的Html做的事情。