我用一个WebClient对象下载了一个网页的HTML代码,现在我想用这段html代码创建一个HtmlDocument对象但是问题是,HtmlDocument对象是不能用new的。那怎么可以在不通过WebBrowser的情况下,利用一段html代码得到与WebBrowser.Document相同的HtmlDocument对象呢?
简单地说,平时是这样得到的,HtmlDocument = WebBrowser.Document;但现在必须不通过WebBrowser来实现,我已经用WebClient下载了html代码,问题就是不知道怎么生成HtmlDocument 对象

解决方案 »

  1.   

    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());
        }
    }
      

  2.   

    呵呵,连老大都来了~~~ 谢谢老大,不过我要的刚好与老大的相反我就是想不用WebBrowser得到document,而用一段html源代码来创建一个HtmlDocument
      

  3.   

    要用HtmlDocument是肯定会用到WebBrowser的建议你去看这个:
    Html Agility Pack ── 一个分析HTML的工具 
    http://blog.joycode.com/saucer/archive/2006/10/18/85316.aspx
      

  4.   

    我还找到一个号称不用下载的,但是其实还是用到了browser的组件实在不想用的话考率以下东东:
    tidy
    sgmlreader
    Html Agility Pack 还有别的,我记不得了
      

  5.   

    为啥不用WebBrowser?解析html string 又不用重新下载的。
    好像没有别的方法创建 HtmlDocument
      

  6.   

    你可以
    http://msdn2.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.webtesting.htmldocument.htmldocument.aspx
      

  7.   

    老大,WebBrowser不能用在MTA中,只能用在STA,而且我在Timer里面调用Thread,
    再调用函数去用WebBrowser.Navigate的话,会出很多问题而且WebBrowser.Navigate并不会停止等待导航完毕,而是直接就去处理下一条语句了。所以一般要用WebClient才能实现,但是我用WebClient得到的只是html
      

  8.   

    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
      

  9.   

    楼上的到底要表达什么呢?mshtml里面的IHTMLDocument2我已经用过了,但是其write函数生成的IHTMLDocument2和WebBrowser.Document.DomDocument是不同的,我也不知道为什么~~
      

  10.   

    你想要的大概是网页load完的dom文档的指针对象所以才必须要用WebBrowser,跟自己创建的IHTMLDocument2不同Html Agility Pack 这个可能有用,只是要怎么转换到你想要的对象类型就要花点心思了