Durchlaufen eine html-Zeichenfolge zu finden, die alle img-tags und ersetzen Sie das src-Attribut Werte

Habe ich einen html-code als string. Ich muss alle img-tags in string, Lesen Sie den Wert der einzelnen src-Attribut und übergeben es an einer Funktion, die Funktion gibt einen kompletten img-tag, dass muss an die Stelle des img-Tags Lesen.

Er braucht Sie zum Durchlaufen der ganzen Reihe, und führen Sie die gleiche Logik für alle img-tags.

Angenommen, dass meine html-string sieht wie folgt aus:

string htmlBody= "<p>Hi everyone</p><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAA..." <p>I am here </p> <img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAC..." />"

Ich habe den folgenden code, mit dem man das erste img-tag, nimmt der src-Wert (das ist ein base64-string) und konvertiert es in ein array von bits zu erzeugen ein stream, dann kann ich erstellen Sie eine neue src-Wert, die einen link zu dem stream.

  //Remove from all src attributes "data:image/png;base64"      
  string res = Regex.Replace(htmlBody, "data:image\\/\\w+\\;base64\\,", "");
  //Match the img tag and get the base64  string value
  string matchString = Regex.Match(res, "<img.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;
  var imageData = Convert.FromBase64String(matchString);
  var contentId = Guid.NewGuid().ToString();
  LinkedResource inline = new LinkedResource(new MemoryStream(imageData), "image/jpeg");
  inline.ContentId = contentId;
  inline.TransferEncoding = TransferEncoding.Base64;
  //Replace all img tags with the new img tag 
  htmlBody = Regex.Replace(htmlBody, "<img.+?src=[\"'](.+?)[\"'].*?>", @"<img src='cid:" + inline.ContentId + @"'/>");

Wie Sie sehen können finnaly ich habe das neue img-tag ersetzen:

   <img src='cid:" + inline.ContentId + @"'/>

Aber der code ersetzt alle img-Tags mit dem gleichen Inhalt. Ich muss in der Lage sein, um das img-tag, führen Sie die Logik, die ihn ersetzen und dann weiter mit dem nächsten img-tag.

Hoffe, Sie können mir eine Ahnung, wie ich das tun kann. Vielen Dank im Voraus.

InformationsquelleAutor D.B | 2016-09-30
Schreibe einen Kommentar