怎样不通过WebBrowser而实例化一个HtmlDocument

Clothos 2006-10-25 07:10:22
我用一个WebClient对象下载了一个网页的HTML代码,现在我想用这段html代码创建一个HtmlDocument对象

但是问题是,HtmlDocument对象是不能用new的。

那怎么可以在不通过WebBrowser的情况下,利用一段html代码得到与WebBrowser.Document相同的HtmlDocument对象呢?


简单地说,平时是这样得到的,HtmlDocument = WebBrowser.Document;

但现在必须不通过WebBrowser来实现,我已经用WebClient下载了html代码,问题就是不知道怎么生成HtmlDocument 对象
...全文
3165 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
afei2003 2007-04-21
  • 打赏
  • 举报
回复
学习
mingchao123 2006-11-17
  • 打赏
  • 举报
回复
学习
soillovecat 2006-10-29
  • 打赏
  • 举报
回复
你想要的大概是网页load完的dom文档的指针对象

所以才必须要用WebBrowser,跟自己创建的IHTMLDocument2不同

Html Agility Pack 这个可能有用,只是要怎么转换到你想要的对象类型就要花点心思了
Clothos 2006-10-25
  • 打赏
  • 举报
回复
楼上的到底要表达什么呢?mshtml里面的IHTMLDocument2我已经用过了,

但是其write函数生成的IHTMLDocument2和WebBrowser.Document.DomDocument是不同的,

我也不知道为什么~~
蒋晟 2006-10-25
  • 打赏
  • 举报
回复
You need use the COM interface from Microsoft.mshtml.
Reference
http://www.samspublishing.com/articles/article.asp?p=27219&seqNum=8&rl=1
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/browser/walkall/default.asp
Clothos 2006-10-25
  • 打赏
  • 举报
回复
老大,WebBrowser不能用在MTA中,只能用在STA,而且我在Timer里面调用Thread,
再调用函数去用WebBrowser.Navigate的话,会出很多问题

而且WebBrowser.Navigate并不会停止等待导航完毕,而是直接就去处理下一条语句了。

所以一般要用WebClient才能实现,但是我用WebClient得到的只是html。。。
jetxia 2006-10-25
  • 打赏
  • 举报
回复
呵呵
kokubo_wing 2006-10-25
  • 打赏
  • 举报
回复
看到钻石了
孟子E章 2006-10-25
  • 打赏
  • 举报
回复
你可以
http://msdn2.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.webtesting.htmldocument.htmldocument.aspx
孟子E章 2006-10-25
  • 打赏
  • 举报
回复
为啥不用WebBrowser?解析html string 又不用重新下载的。
好像没有别的方法创建 HtmlDocument
lovexyz 2006-10-25
  • 打赏
  • 举报
回复
我还找到一个号称不用下载的,但是其实还是用到了browser的组件

实在不想用的话考率以下东东:
tidy
sgmlreader
Html Agility Pack

还有别的,我记不得了
lovexyz 2006-10-25
  • 打赏
  • 举报
回复
要用HtmlDocument是肯定会用到WebBrowser的

建议你去看这个:
Html Agility Pack ── 一个分析HTML的工具
http://blog.joycode.com/saucer/archive/2006/10/18/85316.aspx
Clothos 2006-10-25
  • 打赏
  • 举报
回复
呵呵,连老大都来了~~~ 谢谢老大,不过我要的刚好与老大的相反

我就是想不用WebBrowser得到document,而用一段html源代码来创建一个HtmlDocument
孟子E章 2006-10-25
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.DocumentText =
"<html><body>Please enter your name:<br/>" +
"<input type='text' name='userName'/><br/>" +
"<a href='http://www.microsoft.com'>continue</a>" +
"</body></html>";
webBrowser1.Navigating +=
new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
}

private void webBrowser1_Navigating(object sender,
WebBrowserNavigatingEventArgs e)
{
System.Windows.Forms.HtmlDocument document =
this.webBrowser1.Document;

if (document != null && document.All["userName"] != null &&
String.IsNullOrEmpty(
document.All["userName"].GetAttribute("value")))
{
e.Cancel = true;
System.Windows.Forms.MessageBox.Show(
"You must enter your name before you can navigate to " +
e.Url.ToString());
}
}
winner2050 2006-10-25
  • 打赏
  • 举报
回复
没有用过。
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-25 07:10
社区公告

让您成为最强悍的C#开发者