更改src属性

问题描述:

我必须解析电子邮件的html,获取所有img标签,并用我想要的图像的URL替换src值。更改src属性<img>

这部分已经完成。我可以访问<img>并使用我想要的网址更改属性。

问题是,当我打印html的src等于cid:companylogo,它应该是我给的图像的完整url。

我需要知道如何在原始html中的<img>的src值发生更改后加载html。下面的代码作为参数接收电子邮件的原始HTML中的字符串正如你在你的评论指出,这是“体”

 string SRC = ""; 
     int indice = 0; 
     //Console.WriteLine(body); 

     HtmlDocument email = new HtmlDocument(); 
     email.LoadHtml(body); 

     foreach (HtmlNode img in email.DocumentNode.SelectNodes("//img")) 
     { 
      SRC = img.GetAttributeValue("src", null); 
      for (int i = 0; i < contentIDS.Count; i++) 
      { 
       if (SRC.Equals(contentIDS[i])) 
       { 
        indice = i; 
        break; 
       } 
      } 

      img.SetAttributeValue("src", urls[indice].ToString());//change src value 
      Console.WriteLine("URL" + img.GetAttributeValue("src", null));//its printed how i want to 
     } 

     body = item.Body;//am stuck here i want body to have a final value of the whole html but with the changes made in src above. 
     return body; 
+0

什么是你指的是在该行返回前的'item'变量? – Oded 2012-02-21 17:08:36

+0

其收到的也作为一个参数调用此函数是在这个块内:foreach(在findResults.Items项目项目) – rdk1992 2012-02-21 17:11:19

+0

点是我不知道如何访问的HTML内容,遭受改变的src值的 rdk1992 2012-02-21 17:12:23

,您使用的是item变量也通过了 - 不过,这ISN你在操纵什么。

相反的:

body = item.Body; 

你应该使用:

body = email.Body; 

更新:

既然你现在已经显露出来,你正在使用的HAP,你可以简单地得到的内部HTML文档节点。

未经测试:

body = email.DocumentNode.InnerHtml; 
+0

作为电子邮件的HtmlDocument对象是其中的一个在文档中没有.Body方法 – rdk1992 2012-02-21 17:16:00

+0

@ rdk1992 - 从框架的第2版开始,它一直存在。 http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.body.aspx – Oded 2012-02-21 17:18:20

+0

这东西是疯了,然后因为它不承认这种方法。我下载最新版本的htmlagilitypack api – rdk1992 2012-02-21 17:21:47