Webbrowser Control可以处理“坏”HTML吗?

时间:2010-11-29 10:21:25

标签: c# html .net browser

我正在使用C#中的Webbrowser控件并尝试访问文档中的一些HtmlElements。 问题是文档Body仅包含五个孩子中的两个。 (http://www.target.com/cart/ref=nav_sc_rev_checkout)。所以我无法访问正文中的特定元素,尽管它在UI中渲染得很好。

我怀疑Body中存在错误的HTML,因此文档树已损坏?

有没有办法处理这个问题,因为它仍然很好......?

感谢。

更新:  问题是DocumentCompleted事件被触发但Doc没有被完全解析,所以这就是为什么我只有5个元素中的2个。

4 个答案:

答案 0 :(得分:1)

是的,WebBrowser是IE的包装器,它将尽可能好地处理错误的HTML。

答案 1 :(得分:0)

您不能简单地将内容写入文本文件而不是Web浏览器控件,并将其转换为HTML文件。然后将其加载到浏览器中并使用您选择的开发工具进行检查。

答案 2 :(得分:0)

除了这个站点的html代码超过200 errors(大多数缺少实体)之外,你可以尝试将代码加载到程序内的XmlDocument或XDocument中,并通过XPath访问你想要的节点。

答案 3 :(得分:0)

如果您需要以编程方式与HTML进行交互,更具体地说是错误的HTML,我建议您查看HTMLAgilityPack

  

这是一个敏捷的HTML解析器   构建一个读/写DOM并支持   普通的XPATH或XSLT(实际上你   不必了解XPATH也不了解   使用XSLT,不用担心......)。它是   允许您使用的.NET代码库   解析“out of the web”HTML文件。的的   解析器非常宽容“真实   世界“格式错误的HTML。对象   模型与提出的非常相似   System.Xml,但用于HTML文档(或   流)。