首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中解析html的最好方法是什么?

在C#中解析html的最好方法是什么?
EN

Stack Overflow用户
提问于 2008-09-11 09:16:40
回答 13查看 500.2K关注 0票数 66

我正在寻找一种库/方法来解析html文件,该文件具有比通用xml解析库更多的html特定功能。

EN

回答 13

Stack Overflow用户

发布于 2008-09-11 10:35:12

您可以使用TidyNet.Tidy将HTML转换为XHTML,然后使用XML解析器。

另一种选择是使用内置引擎mshtml:

代码语言:javascript
复制
using mshtml;
...
object[] oPageText = { html };
HTMLDocument doc = new HTMLDocumentClass();
IHTMLDocument2 doc2 = (IHTMLDocument2)doc;
doc2.write(oPageText);

这允许您使用类似javascript的函数,如getElementById()

票数 27
EN

Stack Overflow用户

发布于 2009-12-18 12:51:32

我发现了一个名为Fizzler的项目,它采用jQuery/Sizzler方法来选择HTML元素。它基于HTML Agility Pack。它目前处于测试阶段,只支持CSS选择器的一个子集,但是在讨厌的XPath上使用CSS选择器是非常酷和令人耳目一新的。

http://code.google.com/p/fizzler/

票数 16
EN

Stack Overflow用户

发布于 2008-09-11 14:08:21

在第三方产品和mshtml (即互操作)上,您可以做很多事情而不会变得疯狂。使用System.Windows.Forms.WebBrowser。从那里,您可以在HtmlDocument上执行"GetElementById“或在HtmlElements上执行"GetElementsByTagName”之类的操作。如果你想实际地与浏览器交互(例如,模拟按钮点击),你可以使用一个小反射(imo比Interop更小的邪恶)来实现:

代码语言:javascript
复制
var wb = new WebBrowser()

..。告诉浏览器导航(与此问题无关)。然后,在Document_Completed事件上,您可以像这样模拟点击。

代码语言:javascript
复制
var doc = wb.Browser.Document
var elem = doc.GetElementById(elementId);
object obj = elem.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);

你可以做类似的反射来提交表单,等等。

好好享受吧。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档