字符串到HtmlDocument

lap*_*ppy 29 html c#

我正在通过URL获取html文档WebClient.DownloadString(url)但是很难找到我正在寻找的元素内容.虽然在我周围阅读HtmlDocument,但它有各种各样的东西GetElementById.如何HtmlDocument用返回的html 填充url

Dan*_*Tao 29

使用SLaks建议的 Html Agility Pack ,这变得非常简单:

string html = webClient.DownloadString(url);
var doc = new HtmlDocument();
doc.LoadHtml(html);

HtmlNode specificNode = doc.GetElementById("nodeId");
HtmlNodeCollection nodesMatchingXPath = doc.DocumentNode.SelectNodes("x/path/nodes");
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 28

HtmlDocument班是围绕本地的包装IHtmlDocument2COM接口.
您无法从字符串轻松创建它.

您应该使用HTML Agility Pack.

  • 由于@dhsto已经给出了这个问题的准确答案,我看不出这个答案是如何正确的. (3认同)

Dav*_*ret 20

回答原来的问题:

HTMLDocument doc = new HTMLDocument();
IHTMLDocument2 doc2 = (IHTMLDocument2)doc;
doc2.write(fileText);
// now use doc
Run Code Online (Sandbox Code Playgroud)

然后转换回字符串:

doc.documentElement.outerHTML;
Run Code Online (Sandbox Code Playgroud)

  • 似乎不可能像这样实例化“HTMLDocument”。 (2认同)
  • @Steinfeld我刚做了另一个测试,它对我有用.确保你'使用mshtml;`.它是参考对话中的"Microsoft.mshtml".我正在使用版本`7.0.3300` (2认同)

Nik*_*aur 11

对于那些不想使用HTML敏捷包并希望使用本机.net代码从字符串中获取HtmlDocument的人来说,这里有一篇关于如何将字符串转换为HtmlDocument的好文章

这是要使用的代码块

public System.Windows.Forms.HtmlDocument GetHtmlDocument(string html)
        {
            WebBrowser browser = new WebBrowser();
            browser.ScriptErrorsSuppressed = true;
            browser.DocumentText = html;
            browser.Document.OpenNew(true);
            browser.Document.Write(html);
            browser.Refresh();
            return browser.Document;
        }
Run Code Online (Sandbox Code Playgroud)