C# 即使我想用HtmlAllityPack解析HTML字符串,我也会使用HtmlDocument吗?

C# 即使我想用HtmlAllityPack解析HTML字符串,我也会使用HtmlDocument吗?,c#,html,parsing,C#,Html,Parsing,我在C#工作。我试图从HTML字符串(实际上是一个post数据)中提取img标记的第一个实例 这是我的代码: private string GrabImage(string htmlContent) { String firstImage; HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(htmlContent); Html

我在C#工作。我试图从HTML字符串(实际上是一个post数据)中提取img标记的第一个实例

这是我的代码:

 private string GrabImage(string htmlContent)
 {
    String firstImage;

    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
    htmlDoc.LoadHtml(htmlContent);
    HtmlAgilityPack.HtmlNode imageNode = htmlDoc.DocumentNode.SelectSingleNode("//img");
    if (imageNode != null)
    {
        return firstImage = imageNode.ToString();          
    }
    else
        return firstImage=" ";
}     
但是它在htmlDoc中变为null,即使我试图从字符串解析HTML,我也会使用HtmlDocument类型吗


顺便问一下,这是从我的HTML字符串中获取图像标记的第一个实例的正确方法吗?

对于p.S.部分,您需要确保返回imageNode的HTML文本,而不是对象的名称


当我在使用agility pack的计算机上时,我将尝试为文档添加一个附加部分。

使用您提供的HTML,我创建了这个控制台应用程序

    static void Main(string[] args)
    {         

        var image = GrabImage("<h2>How to learn Photoshop</h2><p> Its <a href=\"/mysite.aspx\">link</a></p><br /> <img src=\"image.jpg\" alt=\"image\"/>");
        Console.WriteLine(image);
        Console.ReadLine();
    }

    private static string GrabImage(string htmlContent)
    {
        String firstImage;

        HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.LoadHtml(htmlContent);
        HtmlAgilityPack.HtmlNode imageNode = htmlDoc.DocumentNode.SelectSingleNode("//img");
        if (imageNode != null)
        {
            firstImage = imageNode.OuterHtml.ToString();
        }
        else
            firstImage = " ";
        return firstImage;
    }
static void Main(字符串[]args)
{         
var image=GrabImage(“如何学习PhotoshopIts


”); 控制台。WriteLine(图像); Console.ReadLine(); } 私有静态字符串GrabImage(字符串htmlContent) { 字符串图像; HtmlAgilityPack.HtmlDocument htmlDoc=新的HtmlAgilityPack.HtmlDocument(); htmlDoc.LoadHtml(htmlContent); HtmlAgilityPack.HtmlNode imageNode=htmlDoc.DocumentNode.SelectSingleNode(“//img”); 如果(imageNode!=null) { firstImage=imageNode.OuterHtml.ToString(); } 其他的 firstImage=“”; 返回第一个图像; }

我找不到你所描述的问题。你能告诉我你在哪里调用GrabImage方法吗?

请说明你使用的是什么语言。你能举一个例子说明正在传入的htmlContent吗?谢谢Greg,我刚刚更新了这个问题。我在《C#Jeremy》中使用了一个htmlContent的例子:如何学习PhotoshopIts


……BenMaddox,我已经知道我做错了什么。谢谢你的帮助。这个解决方案和我的答案有关吗?