如何从C#WebBrowser获得所有顶级htmlelements?

时间:2012-09-11 19:03:16

标签: c# .net webbrowser-control

我想在Web浏览器上显示DOM,其中包含所有注释和html,head,body等。保留其结构。目前,我只能从节点html开始。 Document.All没有帮助。 我能看到的唯一方法是webBrowser1.Document.Body,但我会错过评论,等等。然后,如果我使用Document.All,那么它会给我所有的节点。

2 个答案:

答案 0 :(得分:0)

尝试使用HTMLAgilityPack,它支持Xpath,因此您可以根据需要获取任何节点。

答案 1 :(得分:0)

正如hienvd_csuit建议的那样,我认为HTML Agility Pack是您的最佳选择。如果您仍想使用WebBrowser,可能的解决方案是使用dynamic直接访问非托管DOM(需要.NET 4+)。例如,你可以这样做:

dynamic dom = wb.Document.DomDocument;
foreach (dynamic node in dom.childNodes)
{
    Console.WriteLine ("{0} - {1} - {2}", node.nodeType, node.nodeName, node.nodeValue);
}

当然,您需要知道DOM的结构,因为intellisense不适用于动态对象;你可以找到一些关于它的信息here