2012-02-21 13 views
1

私は電子メールのHTMLを解析し、すべてのimgタグを取得し、src値を私が望む画像のURLに置き換えなければなりません。src属性を変更する<img>

この部分は既に完了しています。私は<img>にアクセスし、私が望むURLで属性を変更することができます。

問題は、私は、HTMLを印刷するときsrcがcid:companylogoに等しく、それは私が与えた画像の完全なURLでなければならないことです。

私は、元のHTMLで<img>のsrc値が変更された後にHTMLをロードする方法を知っておく必要があります。しかし、このISNを - 以下のコードは、あなたがあなたのコメントに注意している「身体」

 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

+0

パラメータとして受け取ったこの関数の呼び出しは、このブロック内にあります。foreach(findResults.Items内のアイテムアイテム) – rdk1992

+0

ポイントは私がそのHTMLのコンテンツのsrc値の変更に苦しんでいるHTMLコンテンツにアクセスする方法を知らない rdk1992

答えて

1

、使用しているitem変数も渡されている文字列にパラメータとして電子メールの元のHTMLを受け取りますあなたが操作しているものはありません。

の代わりに:

あなたが使用する必要があります
body = item.Body; 

body = email.Body; 

更新:

あなたは今、あなたはHAPを使用している明らかにしているので、あなたは、単にの内部HTMLを取得することができますドキュメントノード

未テスト:

body = email.DocumentNode.InnerHtml; 
+0

電子メールとしてのHtmlDocumentオブジェクトは、ドキュメントに.Bodyメソッドがありません。 – rdk1992

+0

@ rdk1992 - フレームワークのバージョン2以降にあります。 http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.body.aspx – Oded

+0

この方法は、このメソッドを認識しないので、狂っています。 htmlagilitypack apiの最新バージョンをダウンロードします – rdk1992

関連する問題