我希望修复HtmlAgility库有什么错误?根据我自己的经验,我知道它可以关闭一个缺失的标签,例如:
<car>Nissan</car
什么时候加载或LoadHtml,它会修复它,如:
<car>Nissan</car>
我也知道ParseErorrs集合可以确定Reason,Stream等。
是否存在错误列表(或者您可以根据自己的经验判断)HtmlAgility修复错误的可靠性以及HtmlAgility无法解决哪些错误?
答案 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做的事情。